This blog was originally published on mikemadison.net in July 2020 and has been repurposed here with permission.
Open source software thrives (or dies) on the community that is backing it, and Drupal is no different. The contributed (contrib, if you’re in on the Drupal lingo) of Drupal functionality far out distances the out of the box functionality in Drupal core. There are thousands and thousands of modules to choose from and while each project has different requirements and needs, there are a few modules I use on every project.
As an architect and technical lead at Acquia, I build Drupal applications of all sizes and complexities for customers that range from government organizations to multinational corporations to conferences and events. Still, all these Drupal platforms have basic content management needs despite their varied audiences and stakeholders. This is my list of 9 modules from 2020 that I am using on every project build! If you’re embarking on your own Drupal 9 project soon, these modules will help you get off to a great start.
1. Config Split
I firmly believe that every Drupal build requires some degree of conditional configuration, even if that’s only to provide needed variation between local and production environments. Config Split is a critical component of every project I build, and I strongly recommend that you incorporate it into your process if you haven’t already.
2. Admin Toolbar
Yes, Drupal ships with a stock Toolbar. No, it’s not particularly user friendly. The Admin Toolbar (and its bundled Admin Toolbar Extras) module significantly enhances the administrative user experience.
This module automatically renders the multilevel admin menu as a drop-down menu. It’s not fancy, but it’s highly effective.
Drupal’s core content moderation workflow and revision tools work great. However, when you create a new draft there isn’t a great way to see what has changed. The Diff module provides a much improved interface for revisions that shows you what was changed.
4. Environment Indictor
Environment Indicator makes working with local / dev / stage / prod environments much more user friendly. When coupled with config split and admin toolbar, this module can automatically display which environment you are currently working in. This works as a great, friendly reminder that THIS IS PROD or (this is local) to help your administrative users take appropriate action based on the environment they are in.
I usually commit the config for environment indicator such that my environments all have different colors as well as names. Note, you will need something to identify the environment to enable your config splits (e.g. Acquia’s Environment Detector that ships with BLT).
5. Field Group
Unlike Paragraphs or Field Collection, Field Group doesn’t muck about with your data model. But it does allow you to easily group like fields on forms for content creators. Again, this is a small enhancement in the grand scheme of things, but it makes the content creator’s user experience much improved!
Not to be confused with the Path module which ships with Drupal core, Pathauto allows you to define patterns for your content as you create it. For instance, if you have a blog content type, Path can create a clean URL for you that is just your “title” of the node. Pathauto allows you to define /blog in the clean URL automatically because of the content type.
The redirect module provides some impressive functionality when handling redirects in Drupal such as automatically creating a redirect for any content whose path gets updated. While this tool shouldn’t be used for every redirect, there are some guidelines you can follow. A general rule: If Drupal controls the content, use the redirect module.If you’re redirecting elsewhere, then start looking at .htaccess, CDN or other methodologies.
Development and staging environments are important tools to be used in the development process. However, the last thing you (or your customer) want is to accidentally reveal something in a lower environment before it’s ready for prime time. Enter shield. Shield allows you to do a basic browser auth challenge before the browser can load the site.
There are many other more robust options for security (and if you need a “real” secure solution, please explore them). But if you need a simple challenge to keep unwanted traffic out of an environment, Shield is your module!
Last but not least is Seckit. This module allows you to modify certain HTTP headers on your website to better enhance the security. Again, can you do this in other ways? Yes. Seckit just makes it so darn easy and convenient..
In conclusion, all of these Drupal 9 modules do relatively simple things. They also have a common thread, which is they take existing core functionality (like config, paths, toolbars, etc.) and enhance that functionality for a smoother user experience.
The best news? All of these modules are compatible with Drupal 9, so you can start using them right now (on either D8 or D9).