Drupal bills itself as a “Content Management System”, but, in fact, it’s really a “Content Management Framework.” Now, “framework” is really techno-jargon for stating that a piece of software doesn’t really do much “out of the box.” But what makes Drupal so powerful and popular is this pluggable architecture and zealous commitment to open source and community. One of the keys to being a successful Drupal developer is understanding which plug-in modules might be applicable to your business use-case (there are ~6,500 (!) being actively maintained for Drupal 7.x) and how to use them efficiently.
I’ll be teaching Acquia’s Site Building with Drupal class tomorrow in Washington DC (also available online), and one of the questions that comes up almost immediately pertains to which modules we typically use in the sites that we deliver for customers. While most of the following modules are covered in great detail within the course, there are a few additional ones that we typically add to the Acquia Drupal distro that we felt were worth mentioning.
To prevent admins and developers from losing their minds:
- Admin Menu
The Admin Menu Module provides a more robust administration menu that uses CSS and JS to give you a drop-down menu hierarchy. Deploying this module makes Drupal’s administration UI a lot easier to work with, particularly as you start installing additional modules and create new content types and views. It also enables you to flush Drupal’s caches in a single click.
- Module Filter
The number of modules that you’ll install on your site is likely to be quite long, quickly making the default admin gui painful to work with. This module improves the admin system by adding a text filter field as well as instantiating a tab-based GUI.
Features provides a UI and API for taking different site building components from modules with exportables and bundling them together in a single feature module. A feature module is like any other Drupal module except that it declares its components (e.g. views, contexts, CCK fields, etc.) in its
.infofile so that it can be checked, updated, or reverted programmatically. In addition, Features enables developers to check-in features into source control systems, like Git.
For login management:
Enables users to login using either their username or their email address. Because users can memorize usernames or passwords, but not both.
- Password Policy
This module provides a way to specify a certain level of password complexity (aka. “password hardening”) for user passwords on a system by defining a password policy, thereby ensuring that most users will need to use the password recovery feature…a lot.
This module enables administrators to masquerade as other users in order to test site permissions, roles-based security, and personalized contextual selectors. Never have to ask someone for their password again!
For a better content contributor data input experience:
Provides a standard content field for links. It’s called the world-wide-web for a reason, yo!
Provides an easy interface for internal and external linking with editors and fields by using an autocomplete field. Linkit links to nodes, users, managed files, terms and have basic support for all entities by default. It improves upon the Link ui significantly as users do not have to remember specific urls.
Want to add a graphical date field to a Content Type or perform complex date calculations? Of course you do!
What’s the worst browser-based WYSIWYG editor? With the WYSIWYG module, you can try all of them out to figure out which one sucks less! This module enables you to swap in all the usual suspects, including FCKEditor, TinyMCE 3, YUI editor, Whizzywig, EpicEditor, and a host of others in place of the default textarea that ships with Drupal 7. Unfortunately, our current favorite, TinyMCE 4 isn’t supported…yet.
This module is an indispensable part of every site that we develop. It enables you to define filters to select content that meet specified criteria and then output those content nodes into a variety of different formats. Views are so important that the module has become a core component of Drupal 8.
- Views Bulk Operations
This module augments Views by allowing bulk operations to be executed on the displayed rows. It does so by showing a checkbox in front of each node, and adding a select box containing operations that can be applied. Drupal Core or Rules actions can be used. Typically this module is used to create custom admin interfaces for business users.
A suite of modules that helps facilitate development and testing, including a dynamic lorum-ipsum content generator. When I get around to it, I’m going to add a Star Trek ipsum generator. Because I can. And because I’m a nerd.
- Entity Reference (Requires Entity API and Chaos Tools)
This module facilitates the creation of 1:1 or 1:many relationships between content objects.
Allows site administrators to define conditionally executed actions based on occurring events (known as reactive or ECA rules). This is typically used to implement custom workflows.
Allows you to manage contextual conditions and reactions for different portions of your site. You can think of each context as representing a “section” of your site. For each context, you can choose the conditions that trigger this context to be active and choose different aspects of Drupal that should react to this active context. This module can be used to implement contextual “breadcrumb” links.
So what are you waiting for? Go check ’em out! Use the Force, read the Source!
And if you have any other favorite modules, please drop us a note in the comments section below!