The 9 Drupal Modules I use on Literally Every Build in 2020

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 outdistances 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! And, if you’re like me, you are probably going to wonder as you read the list why some of this stuff isn’t in core (and I hope somewhere in the Drupal 9 ecosystem at least a few of these DO move into core).

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.

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.

Pasted_Image_2020-06-18__11_18_PM.jpg


This module automatically renders the multilevel admin menu as a drop-down menu. It’s not fancy, but it’s highly effective.


Diff

Drupal’s core content moderation workflow and revision tools work great. However, out of the box 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.

Screen Shot 2014-08-26 at 3.42.50 PM.png

Environment Indicator

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).

2015-12-10 08-05-44.png


Field Group

Unlike Paragraphs or Field Collection, Field Group doesn’t muck about with your data model. But it does allow you to very 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!

fieldgroup_03.png

Pathauto

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.

path_auto_0.png


Redirect

As with many aspects of Drupal, there are many ways to handle redirects. The redirect module provides for some super handy functionality however, the not least of which is automatically creating a redirect for any content whose path gets updated. This isn’t a tool that should be used for everything, but I always include it on my projects and I always use it. General rule? If Drupal controls the content, use the redirect module if a redirect is needed. If you’re redirecting elsewhere then start looking at .htaccess, CDN, or other methodologies.

Shield

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 its ready for prime time. Enter shield. Shield allows you to do a very basic browser auth challenge before the browser can load the site.

There are many others more robust and more secure 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!

Screen shot 2012-04-23 at 5.05.33 PM_0.png

Seckit

Last but certainly 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 though. There’s no reason not to have it.

In Conclusion

All of this modules do relatively simple things. They also have a common thread, which is they take existing core functionality (like config, paths, toolbars, etc.) and enhances that functionality.

The best news? All of these modules have a version that is compatible with Drupal 9 so they are absolutely safe to start using right now (on either D8 or D9).