Posted on

Drupal CMS is filled with modules that are considered best practice for most websites.
Yesterday, I wrote about the surprises, but there were plenty of modules that I use nearly every project and was happy to see.
Chaos Tools: the strangely named module that serves as a foundation for other modules—and has since the early days of Drupal 6.
Field Group: so helpful for adding non-field elements and grouping elements to form displays.
Smart Date (and friends): powerful date formatting with much needed views integration for doing event and other date/time-based content types better.
Geocoder and Leaflet: if you've ever built a map in Drupal using data from a view, you tried these modules.
Focal Point: flexible cropping of images based on a chosen "focal point". I wish there were a better option for cropping with handles so that the editor could see their crop better. Image Widget Crop comes close, but doesn't play as nice with multiple image styles as Focal Point.
Easy Breadcrumb: as it's name suggests, this module makes breadcrumb configuration easy. I like to pair it with Menu Breadcrumb.
Google Tag: while I prefer sites that don't track users (this site does not track you), I appreciate the need for analytics, so I wasn't surprised by this inclusion.
Login with Email or Username: yes, please. Does anyone else fondly remember the name LoginToboggan?
Pathauto: with it, your URLs will not look so nice.
Redirect: you could live without it, but with it you can address things like dead links for content that has changed its URL over time. I have forgotten and relearned a couple of times that Redirect 404 is a submodule of this module.
Scheduler: there are several scheduling modules out there, so I was a bit relieved to see my scheduler of choice make it.
Sitemap and Simple XML Sitemap: you need them for SEO.
Token: it exposes entity and site variables in a format that you can use in places like path aliases (Pathauto).
Search API: Drupal's core search is no match for the flexibility of a defined index. I usually pair Search API with Solr, Elastisearch, or Angolia.
Key: don't store secrets in your codebase. This module helps you put those secrets in a safer place.
Metatag: feeding the data monsters with better data. (This ecosystem of submodules is vast.)
Captcha: I hate captcha, but I understand why it was included. Of the captch options out there, I'm a fan of Cloudflare's Turnstile as it is the least intrusive for users.
Honeypot: ah, honeypot! It sounds like something you want, but it helps fight the stuff you don't (spam). Read more about the honeypot method.
Editoria11y: a module that has forever ruined my ability to type two Ls next to each other. It's also the best way to help your editors write more accessible content by giving immediate feedback and instruction.
Linkit: while some of this functionality is close to making it into core, Linkit has some bonus features that make it easy for editors to find existing content within a Drupal site and "link (to) it".
Better Exposed Filters: these filters are better.
Webform: if you need to let people fill out a form, there is no better starting point. Robust to the point of absurdity.
Whew! Just typing all that took time. Every new site created with Drupal CMS just gets easy access to these 22 modules in its composer dependencies. While I don't install every one of these modules on every site, I have installed and configured them all.
It will be interesting to see how best practice evolves for removing the dependencies you don't need for production websites.
Do you have a project or team that needs some expert help? Do you just want to chat about Drupal CMS and what it might mean to your organization? Connect with me on LinkedIn or reach out to me on Drupal Slack (@joshuami).