My first impression on Drupal 8
So, Drupal 8 is the new kid on the block. And whoa, is that the most popular person on the prom! The three major things (and there are hundreds more) that I like about D8 are the fact that you can (and should!) control all Drupal downloads with Composer. Everything else is just crazy. And the other two things are Configuration Management and Drupal Console.
What modules and themes to install
This is a question that always seems to be asked, since Drupal comes very bare bone to the prom. Which is awesome, we shouldn’t have to download too much code to begin with. But sometimes I wish that there would be just “few” other modules that would come with.
I’ve been around for some time so I know some of the modules that I always download, no matter what. In D7, that would require me to have a shell script that would download and enable those modules. And I know, I know, distributions are for that, but the thing with distributions is that if a module update comes along, then you have to wait for the distribution to actually update the module and then update the distribution. Which I don’t really care for.
In D8, it’s a little simpler, my composer.json file contains all the modules that I normally install on the first go, so instead of doing composer require drupal-composer/drupal-project …., I just copy this composer.json file into my root directory and run composer install. This file was originally built by running composer create-project drupal-composer/drupal-project:8.x-dev MY_PROJECT --stability dev --no-interaction, and then I added all the modules to it.
Rember: Composer just downloads the modules and put’s them undir modules/contrib folder. It does NOT install them! Nor will it install Drupal, if you are starting from scratch. You will still have to install, via drupal site:install or other methods you use.
And because we use Composer, now all the contrib modules do not need to be in our Git repository. Which will keep your git repository cleaner and leaner than before.
Here is my list is, in alphabetical order (just to make that clear ;-) )
Admin toolbar (admin_toolbar)
Yes, admin toolbar. That’s always the first module I install. I just like the hover features of the admin menu too much, and it saves a lot of clicks when you’re navigating the admin menu. Remember to enable both Admin Toolbar and Admin Toolbar Extra Tools (admin_toolbar_tools) to get the D8 Context menu too (to rebuild cache, run cron and more)
Adminimal Theme (adminimal_theme)
I just love this theme, it’s cleaner than Seven (default theme) and offers easier display to content managers. One of the first things I do when I spin up a new site. Remember to also install Adminimal Admin Toolbar (adminimal_admin_toolbar) too, since the color pallete of Adminimal clashes with the Admin Toolbar.
Better Exposed Filters (better_exposed_filters)
The Better Exposed Filters module replaces the Views' default single- or multi-select boxes with radio buttons or checkboxes, respectively. Description fields and Select All/None links can be added to exposed filters to make for a better user experience.
I always start with the Bootstrap theme. It’s clean, simple and uses Sass. And I don’t have to start from scratch (been there, done that!).
This module has been here for a while, but I just recently discovered it. It’s an administrative module, and helps you navigate your admin tasks in a similar way as Mac’s Alfred and Spotlight. Just use alt+d (or alt+k) to toggle, and then type in the menu item you want to access (like Media will give you access to the Configuration->Media links).
Contact storage (contact_storage)
Contact Storage module will provide storage for Contact messages which are fully-fledged entities in Drupal 8. And the contributors are looking for making this a core module. Even though it’s still in Beta, this module has proven to be quite powerful when working with contact messages for your website.
Display Suite (ds)
Display Suite is a suite of modules (like the name hints). The power this module unlatches is magnificent, it gives you much better control over displaying fields of your node and more. If you haven’t tried it, check out some resources, like this one: https://www.youtube.com/watch?v=-06rL7Yq8rk
Google Analytics (google_analytics)
Small module that embeds your Google analytics code to your page. If you have GA account, this is your module.
Anti-spam module. Very powerful. Honeypot uses both the honeypot and timestamp methods of deterring spam bots from completing forms on your Drupal site
Inline Entity Form (inline_entity_form)
Provides a widget for inline management (creation, modification, removal) of referenced entities.
Libraries API (libraries)
As in Drupal 7 Libraries API remains an important API module for some parts of the Drupal 8 contrib ecosystem. Though Drupal 8 core has introduced improved library management tools (libraries.yml and unified library loading) it still does not offer a solution for handling external library dependencies that may be shared across multiple extensions. As a result this remains the primary problem space for the Libraries API module.
Number one SEO module out there, to work with your metatags. Specially necessary if you are sharing a lot of content to social media, in order to get right fields into those shares.
Module Filter (module_filter)
Module number two that I install (after Admin Toolbar). When your site has more than handful of contrib modules, it gets really hard to find then and filter, and this module helps you out with that.
Page Manager (page_manager)
A totally rewritten for D8, this former CTools extension module is very powerful when you need to display same content types based on different criteria (like you want article to display with different sidebar content whether you are logged in or not). A very good demo is here: https://www.youtube.com/watch?v=SqgHRgX06Pk
The Panels module allows a site administrator to create customized layouts for multiple uses. At its core it is a drag and drop content manager that lets you visually design a layout and place content within that layout. Integration with other systems allows you to create nodes that use this, landing pages that use this, and even override system pages such as taxonomy and the node page so that you can customize the layout of your site with very fine grained permissions. And it works great with Page manager!
Never used Paragraphs? What? Really? One of the most powerful modules out there for building content types. It allows you to group fields together in bundles in a way you couldn’t do before (except with Field Groups, but then not). Everybody is talking about Paragraphs, you should check it out too. Ivan talks about Paragraphs in this video: https://www.youtube.com/watch?v=HFL_Khg38ZU
I have to admit, I don’t understand why this module is not in core, I hope it will eventually go there. Pathauto helps you define patterns to your content, so you don’t have to do it yourself. Instead of node/6 it can create the url articles/my-drupal-8-blog, or use any other pattern you’d like. Checkout this video: https://www.youtube.com/watch?v=5VrZ2eIVwNU
Another Anti-spam module. There just cannot be enough of them. Helps you protect your comment and user registration form for being filled with bot autocompletes.
If you move your content a lot from one url to another, redirect is your friend. It helps you create 301 (permanent redirects) from the old url to a new one. Very SEO friendly.
This module provides a ready-to-use search backend that indexes and searches content using Drupal's own database. It is mainly meant for testing purposes and for smaller sites, larger sites will usually want to use a more powerful backend (like Solr or Elasticsearch). Also provided is the "Database Search Defaults" module which provides a complete pre-configured content search when installed. More powerful than Search pages though.
Views Slideshow (views_slideshow)
Views Slideshow can be used to create a slideshow of any content (not just images) that can appear in a View. Powered by jQuery, it is heavily customizable: you may choose slideshow settings for each View you create.
Honorable mention is the Eleven theme by Morten_dk (thememachine), now reaching Beta. It’s included in the composer.json file. Check it out!