Modules of Interest

This is meant to be a collection of modules I find interesting. Some may be created by me, and where's that's true you should see them tagged with mandclu. Is there any particular value for the outside world to be able to browse this collection? Probably not, I just wanted a place to collect and categorize modules. And here you are.

Performs static site analysis to generate a detailed report with actionable best practice recommendations across a variety of concerns, including security, performance, database size and complexity, and more.

Provides a personalization toolset that can do some simple conditional display of content, primarily using Smart Blocks. Also has integrations for a variety data handling capabilities including dataLayer objects, UTM code handling, and integration with subscription-based services that can inject more sophisticated algorithms, like Demandbase or 6sense.


Collaboration tool for SEO on blog posts, social posts, and multichannel distribution. Sounds promising, but requires a subscription to the StoryChief web app.


Allows administrators to inject CSS and JS into the page output based on configurable rules. Useful if site admins want a way to add a front end library to one or more specific pages, without having to deploy code changes to the theme.

Machine Learning is something I've been interested in for a while, especially since seeing a presentation about it at DrupalCon Baltimore. This module, and its capability-specific companion modules give us a hint at the sophisticated ways advanced computing can help reduce the load on content authors in increasingly sophisticated content delivery workflows.

This module is designed to help Drupal sites share content entities: nodes, taxonomy terms, media entities, and more. Sounds like a budget version of Acquia Content Hub, would be interesting to try.


By default Drupal provides "created on" and "last updated" dates for any content, but this module provides a third date, for when a piece of content was published. Often this is the date that should be displayed on news, press releases, etc.

Sometimes your site needs a more complex workflow than the linear state-to-state options possible using the Content Moderation built into Drupal core. This module allows for conditional logic and a variety of different actions that can be triggered, including the ability to add custom ones to meet your needs.

Sometimes the revision log message can be very useful in the Drupal edit interface, but sometimes you want to keep things as simple as possible. This module provides a variety of potential approaches for either hiding the field completely, or making it available selectively. A nice way to make Drupal's edit interface more intuitive.


If your editors regularly run into issues where multiple users are trying to edit the same piece of content, this module allows for a content item to be "checked out", preventing other users from working on it at the same time. There's also a discrete permission to break the lock on content, in case a high priority update needs to get published.

If I had found this module sooner, it would have saved me significant effort on a number of site builds. I've written custom modules specifically to create custom blocks that could be managed as config, which is exactly the problem that module solves.

Traditionally headless sites have to use a specialized search service like Algolia. This module allows a headless application to query your Solr index through Drupal using JSON:API.

I also looked at SolREST, but I'm not sure I like the idea of bypassing Search API, or the fact that it only has a dev release as of this writing.

Designed to prevent the creation of duplicate content, Allow Only One allows a site builder to specify criteria, using one or multiple fields, that will be used to validate that a piece of content is unique.


Sometimes, as part of the publishing workflow, you want to get feedback from people who don't need to access the backend of your website often enough that it makes sense for them to have their own user account. For these kinds of scenarios, where you need "one off" access to unpublished content, the Access Unpublished module is a terrific solution.