├── CONTRIBUTING.md ├── LICENSE └── README.md /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the Ultimate Drupal Reference 2 | The Ultimate Drupal Reference is an open source project and we'd love to accept **your** contribution too! 3 | **Thank you for taking the time to contribute!** 4 | 5 | ## How can I contribute? 6 | ### Suggesting enhancements 7 | If you want to include any change or just clarify if a particular change would be beneficial to the project, 8 | please open an [issue on GitHub](../../issues). 9 | This also applies if you have a better or more up-to-date version of a resource in the reference. 10 | 11 | ### Pull requests 12 | In case that you want to add any kind of resource, simply create a [pull request](../../pulls) with your addition. 13 | But please check the [reference guidelines](#reference-guidelines) before doing so, thank you! 14 | 15 | ## Reference guidelines 16 | 17 | ### Content 18 | The project is aimed to be an **up-to-date** reference to resources that can help people become better Drupal developers. 19 | This includes but is not limited to: 20 | - Drupal modules/themes/distributions 21 | - Tutorials 22 | - Blog posts 23 | - How to videos 24 | 25 | **Any** resource, that you think, could improve someone's Drupal skills is welcome! 26 | 27 | ### Content order 28 | In order not to favor one resource over another, all the lists in the document are sorted **alphabetically**. 29 | 30 | ### Level of detail 31 | To ensure simplicity and because there's always multiple solutions to a problem, we only refer to other resources/solutions 32 | and leave the decision of which solution to use up to you. 33 | For example, we state that the use of Composer is highly recommended but we don't enforce it. 34 | We point to different modules (which may do the same) but leave the decision to you which to choose/use. 35 | 36 | The goal of the project is to be helpful to any Drupal developer, regardless of how exactly they work with Drupal. 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 David Pacassi Torrico 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![GitHub last commit](https://img.shields.io/github/last-commit/dpacassi/UltimateDrupalReference.svg)](https://github.com/dpacassi/UltimateDrupalReference) 2 | [![GitHub contributors](https://img.shields.io/github/contributors/dpacassi/UltimateDrupalReference.svg)](https://github.com/dpacassi/UltimateDrupalReference) 3 | [![license](https://img.shields.io/github/license/dpacassi/UltimateDrupalReference.svg)](https://github.com/dpacassi/UltimateDrupalReference/blob/master/LICENSE) 4 | [![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social&logo=twitter)](https://twitter.com/intent/tweet?text=Starting+with+%23Drupal%3F+Or+simply+just+stuck%3F+Have+a+look+at+the+%23UltimateDrupalReference+on+https%3A%2F%2Fgithub.com%2Fdpacassi%2FUltimateDrupalReference%2C+it+might+help+you+out%21) 5 | 6 | # Ultimate Drupal Reference 7 | When it comes to [Drupal](https://www.drupal.org/), there are a lot of videos, blog posts and general how-to's out there. 8 | While some of them are good, others are in need of improvement and a few of them are simply outdated. 9 | 10 | This project will try to list you the **best, most promising and most efficient** resources that you might need when developing a Drupal site. 11 | 12 | ## Contribution guidelines 13 | This project lives through new and up-to-date resources from the community, from **you**! 14 | If you would like to add a resource or contribute in any other kind of way, be sure to read our [contribution guidelines](CONTRIBUTING.md). 15 | 16 | ## Table of contents 17 | - [Installing Drupal](#installing-drupal) 18 | - [Evaluate Drupal projects without installing Drupal](#evaluate-drupal-projects-without-installing-drupal) 19 | - [Drupal requirements](#drupal-requirements) 20 | - [Official installation page](#official-installation-page) 21 | - [Drupal VMs](#drupal-vms) 22 | - [Composer](#composer) 23 | - [Drupal CLI's](#drupal-clis) 24 | - [IDE's](#ides) 25 | - [Site building with Drupal](#site-building-with-drupal) 26 | - [Theming in Drupal](#theming-in-drupal) 27 | - [Distributions](#distributions) 28 | - [Modules](#modules) 29 | - [Commerce](#commerce) 30 | - [Content](#content) 31 | - [Developer tools](#developer-tools) 32 | - [Forms](#forms) 33 | - [Media](#media) 34 | - [Migration](#migration) 35 | - [Multilingualism](#multilingualism) 36 | - [Multisite](#multisite) 37 | - [Performance](#performance) 38 | - [SEO / Analytics](#seo--analytics) 39 | - [Security](#security) 40 | - [Site building](#site-building) 41 | - [Site navigation](#site-navigation) 42 | - [Social media](#social-media) 43 | - [User & Roles management](#user--roles-management) 44 | - [Views](#views) 45 | - [Themes](#themes) 46 | - [Frontend themes](#frontend-themes) 47 | - [Admin themes](#admin-themes) 48 | - [Troubleshooting](#troubleshooting) 49 | - [Update to the latest stable release](#update-to-the-latest-stable-release) 50 | - [Read the project's description](#read-the-projects-description) 51 | - [Issue queue](#issue-queue) 52 | - [Drupal Answers](#drupal-answers) 53 | - [Google](#google) 54 | - [IRC / Slack support](#irc--slack-support) 55 | - [Contributing to Drupal](#contributing-to-drupal) 56 | - [Video tutorials](#video-tutorials) 57 | - [Beginner training series](#beginner-training-series) 58 | - [General](#general) 59 | - [Modules](#modules-1) 60 | - [Theming](#theming) 61 | - [Blog posts](#blog-posts) 62 | - [Further resources](#further-resources) 63 | - [Drupal PaaS](#drupal-paas) 64 | - [Get in touch with the Drupal community](#get-in-touch-with-the-drupal-community) 65 | - [Credits](#credits) 66 | - [License](#license) 67 | 68 | ## Installing Drupal 69 | There are different ways of installing Drupal. 70 | You can either install it directly on your local machine (or any server) or you can also work with a VM if you prefer. 71 | If you really just want to catch a *quick glimpse* about a specific Drupal distribution, module or theme, then you don't even 72 | need to install anything! Check out the next section for details. 73 | 74 | If you want to run Drupal locally (and directly) on your Mac machine, check out this [great tutorial](https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions). 75 | 76 | ### Evaluate Drupal projects without installing Drupal 77 | No further information needed. Simply visit [simplytest.me](https://simplytest.me/) and launch your custom sandbox! 78 | 79 | ### Drupal requirements 80 | In order to be able to run Drupal on your machine (or any server), you need a web server with PHP and a SQL database server. 81 | Please check the [official requirements page](https://www.drupal.org/docs/8/system-requirements) for more details. 82 | 83 | ### Official installation page 84 | Up-to-date and detailed instructions can be found on the [official installation page](https://www.drupal.org/docs/8/install). 85 | 86 | ### Drupal VMs 87 | If you prefer working with a VM, check out following alternatives: 88 | - [Docker](https://hub.docker.com/_/drupal/) 89 | - [Drupal VM](https://www.drupalvm.com/) 90 | 91 | ### Composer 92 | While not required, it's **highly recommended** that you set up your Drupal project with [Composer](https://getcomposer.org/), 93 | regardless of your technical setup. 94 | Check the [Composer template for Drupal projects](https://github.com/drupal-composer/drupal-project) to install Drupal quickly via Composer. 95 | 96 | #### Composer prestissimo 97 | If you want to speed up Composer, have a look at [prestissimo](https://github.com/hirak/prestissimo). 98 | You can install it globally (no project dependency) to speed up Composer installations by a lot! 99 | Simply run `composer global require hirak/prestissimo` and you're good to go. 100 | Read more about prestissimo in its [project page](https://github.com/hirak/prestissimo). 101 | 102 | ### Converting a non-Composer Drupal codebase to use Composer 103 | Jeff Geerling wrote a nice [blog post](https://www.jeffgeerling.com/blog/2018/converting-non-composer-drupal-codebase-use-composer) about 104 | convertig a non-Composer Drupal codebase to use Composer. 105 | Check it out and benefit from Composer! 106 | 107 | ### Drupal CLI's 108 | When it comes to developing custom modules, themes or simply automate certain tasks with scripts/cronjobs, there are two 109 | major Drupal CLI's which can be a huge help for you: 110 | - [Drupal Console](https://drupalconsole.com/) 111 | - [Drush](http://www.drush.org/) 112 | 113 | ## IDE's 114 | There are lots of different IDE's and editors for PHP. But *most* Drupal developers tend to use [PhpStorm](https://www.jetbrains.com/phpstorm/). 115 | Do you use any other IDE or editor? Please let me know! 116 | 117 | ## Site building with Drupal 118 | Once you have Drupal set up and running, it's time for site building. 119 | Have a look at the great documentation on drupal.org about [site building](https://www.drupal.org/site-building) 120 | as well as as understanding the [concepts of Drupal](https://www.drupal.org/docs/8/understanding-drupal-8/overview). 121 | 122 | ## Theming in Drupal 123 | - [Twig Documentation](https://twig.symfony.com/doc/2.x/) - Twig is the templating language used in building a Drupal theme 124 | - [Debugging Twig Templates](https://www.drupal.org/docs/8/theming/twig/debugging-twig-templates) - This will allow you to see which templates are in use on a page, which template is used to render each item on the page, any hooks for that template, and give you suggestions for naming your new templates 125 | - [Drupal 8 Theming Fundamentals, Part 1](https://www.lullabot.com/articles/drupal-8-theming-fundamentals-part-1) and [Part 2](https://www.lullabot.com/articles/drupal-8-theming-fundamentals-part-2) - An overview of creating and working in a Drupal 8 theme 126 | - [Drupal.org Theming Guide for Drupal 8](https://www.drupal.org/docs/8/theming) - The official guide to Drupal 8 theming. Not always the easiest to understand but very helpful for reference on many topics. 127 | 128 | ## Distributions 129 | While Drupal 8+ core comes with lots of functionality already, the strength of Drupal lies in its extensibility. 130 | Distributions are full copies of Drupal that include Drupal Core, along with additional software such as themes, modules, libraries, and installation profiles. 131 | They're handy if you *really* just want to have a quick start with Drupal. 132 | - [Druppio](https://www.drupal.org/project/druppio_small_business_distribution) - A small business distribution with demo content. 133 | - [Lighting](https://www.drupal.org/project/lightning) - Lightning is a solid Drupal starter kit that enables developers to create great authoring experiences and empower editorial teams. 134 | - [Open Social](https://www.drupal.org/project/social) - Open Social is a out of the box solution for online communities. 135 | - [Thunder](https://www.drupal.org/project/thunder) - Thunder is a Drupal 8 distribution for professional publishing. 136 | - [Varbase](https://www.drupal.org/project/varbase) - Varbase is an enhanced Drupal distribution packed with adaptive functionalities and essential modules, that speed up your development, and provides you with standardized configurations. 137 | - .. and many more on [drupal.org](https://www.drupal.org/project/project_distribution) 138 | 139 | ## Modules 140 | 141 | ### Commerce 142 | - [Drupal Commerce](https://www.drupal.org/project/commerce) - Drupal Commerce is used to build eCommerce websites and applications of all sizes. 143 | - Also make sure to check out the [commerce documentation](https://docs.drupalcommerce.org/). 144 | - [Commerce Registration](https://www.drupal.org/project/commerce_registration) - Provides Drupal Commerce with the ability to sell registrations via the Entity Registration module. 145 | 146 | ### Content 147 | - [Address](https://www.drupal.org/project/address) - Provides functionality for storing, validating and displaying international postal addresses. 148 | - [Automatic Entity Label](https://www.drupal.org/project/auto_entitylabel) - Automatic Entity Label is a small and efficient module that allows hiding of entity label fields. To prevent empty labels it can be configured to generate the label automatically by a given pattern. 149 | - [Corresponding Entity References](https://www.drupal.org/project/cer) - CER keeps reference fields in sync. If you have two entities that refer to each other using Entity Reference (or some other kind of reference field), it saves you the trouble of double-editing your entities in order to have them point at each other. 150 | - [Custom Field](https://www.drupal.org/project/custom_field) - Defines a new Custom Field field type that lets you create simple inline multiple-value fields without having to use referenced entities. 151 | - [Date Timepicker](https://www.drupal.org/project/timepicker) - Integrates the most popular timepicker jQuery plugins into Drupal. 152 | - [Default Content for D8](https://www.drupal.org/project/default_content) - The Default content module gives your module and install profile a way to ship default content as well as configuration. 153 | - [Diff](https://www.drupal.org/project/diff) - This module adds a tab for sufficiently permissioned users. The tab shows all revisions like standard Drupal but it also allows pretty viewing of all added/changed/deleted words between revisions. 154 | - [Disable Messages](https://www.drupal.org/project/disable_messages) - Gives a site owner options to disable specific messages shown to end users. 155 | - [Download All Files](https://www.drupal.org/project/download_all_files) - This module provides a field formatter for the field type 'file' called `Table of files with download all link` . The format which will allow you to "Download all files" through single click. The files will be zipped as single file. 156 | - [D8 Editor Advanced link](https://www.drupal.org/project/editor_advanced_link) - Enhances the link Dialog in D8 CKEditor. 157 | - [Entity Clone](https://www.drupal.org/project/entity_clone) - This module add a new entity operation which allows to clone many of the entities (config & content) provided by the Drupal core. 158 | - [Entity Redirect](https://www.drupal.org/project/entity_redirect) - Adds a configurable redirect after saving a node or other entity. The redirect is configurable per bundle. 159 | - [Entityqueue](https://www.drupal.org/project/entityqueue) - Allows users to create lists of any "entity" (content, users, etc). Each queue is implemented as an entity reference that can hold a single entity type. Items in each list can be manually reordered. 160 | - [External Links](https://www.drupal.org/project/extlink) - External Links is a small module used to differentiate between internal and external links. 161 | - [Field Formatter Class](https://www.drupal.org/project/field_formatter_class) - Allows site administrators to add classes to the outer HTML wrapper for any field display, so that CSS and Javascript can target them. 162 | - [Iframe](https://www.drupal.org/project/iframe) - A custom field, which lets you add a complete iframe to your content types; including Src-URL, setting width and height, optionally a title above, and optionally a target attribute. 163 | - [Image formatter link to image style](https://www.drupal.org/project/image_formatter_link_to_image_style) - This module provides an additional formatter for image core field, to link to an image style. 164 | - [MaxLength](https://www.drupal.org/project/maxlength) - MaxLength allows a soft or hard character limit to be set on titles, text fields and link fields. A character count displays for authors, helping them write concise content. 165 | - [Office Hours](https://www.drupal.org/project/office_hours) - Defines a 'weekly office hours' field type, allowing you to specify when a location is open or closed. 166 | - [Quick Node Clone](https://www.drupal.org/project/quick_node_clone) - Quick Node Clone is meant as a way in Drupal 8 to clone nodes. It currently supports cloning of most field types including Inline Entity Form and Field Collection. 167 | - [Quicklink](https://www.drupal.org/project/quicklink) - This module provides an implementation of Google Chrome Lab's Quicklink library for Drupal. 168 | - [Scheduled Updates](https://www.drupal.org/project/scheduled_updates) - The Scheduled Updates module allows scheduling updates at a specific date and time to entities such as Content(nodes), Users, Terms, Files and many more. 169 | - [Scheduler](https://www.drupal.org/project/scheduler) - Scheduler gives content editors the ability to schedule nodes to be published and unpublished at specified dates and times in the future. 170 | - [State Machine](https://www.drupal.org/project/state_machine) - Provides code-driven workflow functionality. It's also being used in Drupal Commerce to define checkout workflows. 171 | - This blog post is very helpful to get started with State Machine: [Set up workflows with State machine on Drupal 8](https://www.flocondetoile.fr/blog/set-workflows-state-machine-drupal-8). 172 | - [TacJS](https://www.drupal.org/project/tacjs) - Comply to the European cookie law using tarteaucitron.js. 173 | - [Voting API](https://www.drupal.org/project/votingapi) - VotingAPI helps developers who want to use a standardized API and schema for storing, retrieving and tabulating votes for Drupal content. 174 | 175 | ### Developer tools 176 | - [Config Ignore](https://www.drupal.org/project/config_ignore) - This module is a tool to let you keep the configuration you want, in place. 177 | - [Configuration Split](https://www.drupal.org/project/config_split) - Enables you to create different configuration sets for a site. 178 | - [Devel](https://www.drupal.org/project/devel) - A suite of modules containing fun for module developers and themers. 179 | - [Environment Indicator](https://www.drupal.org/project/environment_indicator) - This module will help you to keep sane while working on your different environments by adding a configurable color bar to each one of your environments. 180 | - [Hacked!](https://www.drupal.org/project/hacked) - This module scans the currently installed Drupal, contributed modules and themes, re-downloads them and determines if they have been changed. 181 | - [Stage File Proxy](https://www.drupal.org/project/stage_file_proxy) - Stage File Proxy saves you time and disk space by sending requests to your development environment's files directory to the production environment and making a copy of the production file in your development site. 182 | 183 | ### Forms 184 | - [Antibot](https://www.drupal.org/project/antibot) - Antibot is an extremely lightweight module designed to eliminate robotic form submissions on your website in an innovative-fashion. 185 | - [Autocomplete Deluxe](https://www.drupal.org/project/autocomplete_deluxe) - This is an enhanced autocomplete element, that uses the jQuery UI autocomplete. It will also implement a widget for taxonomy. 186 | - [Better Login](https://www.drupal.org/project/betterlogin) - Fancy and extendable login forms for Drupal. 187 | - [CAPTCHA](https://www.drupal.org/project/captcha) - A CAPTCHA is a challenge-response test most often placed within web forms to determine whether the user is human. 188 | - [Chosen](https://www.drupal.org/project/chosen) - Chosen uses the Chosen jQuery plugin to make your `