Essential Drupal modules (revisited)
Almost three years have passed since I compiled my first list of essential Drupal modules and a lot has changed since then, not the least of which is that Drupal 6 has long since replaced its older sibling. I thought it was high time for an update.
I've learned a lot in the intervening years, and I've had the privilege to work on some massive sites. These modules have been chosen because I use them all the time, and I've come to trust and rely on them. I hope the experience I've gained — often through trial and error — is of some use to you.
The focus of this article is largely on Drupal 6, but it's relevant to the upcoming Drupal 7 as well. At worst, some of these modules might become redundant in Drupal 7, but that's only because the functionality that they've added has been deemed important enough to be included in the Drupal core.
Site administration
Drush
Drush is not really a module, but I'll list it here because it's so damn useful. What is drush? From the project page: "drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt."
Once you've done a core and module upgrade using drush, you'll never go back.
Administration Menu
The Administration Menu module converts the Drupal administration menu into drop down menu bar along the top of the page that allows easy and immediate access to all menu items. The contents of the drop down menus will automatically adapt to the permissions of the currently logged in user.
Content management
Content Construction Kit (CCK)
CCK is an extremely useful module that lets you add custom fields to content type. Text, number, image and file upload, and node reference fields are just a few of the possible field types that may be added. In addition to various internally supported field types, CCK can be further extended through add-on modules. My essential picks are listed below.
FileField
FileField provides a CCK file upload field. See also Filefield Paths and Transliteration. Depends on Mimedetect.
ImageField
ImageField provides a CCK image upload field. Depends on Filefield.
Embedded Media Field
Embedded Media Field provides a CCK field that allows you to embed images, video and audio from third party providers such as YouTube and Vimeo.
Link
Link provides a simple CCK link field. Don't be tempted to just use an ordinary text field to capture a link. This module takes the hassle out of worrying whether your users have entered the http:// or not, and provides a number of formatting options.
MimeDetect
MimeDetect is required by FileField and is used to detect mime types of uploaded files (as you might have guessed).
FileField Paths
FileField Paths allows you to use tokens when specifying paths for where your file and image uploads should be kept. You can also use tokens for the filename.
Transliteration
Transliteration translates UTF-8 characters in URLs or uploaded filenames to safe equivalents. FileField can be instructed to make use of it.
ImageField Tokens
ImageField Tokens allows you to use tokens for the alt and title text in your image uploads. Depends on FileField Paths and ImageField.
ImageCache
ImageCache allows you to set up presets for common image processing tasks such as scaling, or cropping images. It integrates rather nicely with CCK and Views. Depends on ImageAPI and Transliteration.
ImageAPI
The ImageAPI module provides Drupal with an API for managing images and is required by ImageCache.
Views
Views is so integral to creating most of my sites that I sometimes have to wonder why it isn't part of the Drupal core. But when I consider that the point of Drupal is probably to be a basic framework rather than a do-all CMS, I can understand why it's not there. So what does the Views module do? If you think about it, Drupal already contains some built-in views; the default front page being the most obvious example. The Views module let you override this default front page view so you can mess around with the sorting, for example. Not only that, it lets you create whole new views too. Sample usage? How about a recent news page that lists all the items of that news content type that you've just created? Indispensable. Get it.
Better Formats
Better Formats improves the flexibility of Drupal's input formats. So good, its features have been incorporated into the Drupal 7 core.
WYSIWYG editing
Wysiwyg
Wysiwyg enabled the use of popular WYSIWYG editors such as TinyMCE or CKEditor. I've used TinyMCE almost exclusively over the years, mostly because I know it works. You might prefer something else.
IMCE
IMCE is an image uploader and browser that, along with IMCE Wysiwyg bridge, allows image uploads through your chosen WYSIWYG editor.
IMCE Wysiwyg bridge
IMCE Wysiwyg bridge is required by IMCE to integrate with the Wysiwyg module.
Image Resize Filter
Image Resize Filter is a great little module that automatically resizes WYSIWYG images to the dimensions specified in the image tag's width and height attributes.
Paths and menus
Pathauto
Pathauto allows you to define templates for the way paths to pages should be created. So, instead of node/10 you might have node-title.html.
Token
The Token module is required by Pathauto.
Global Redirect
If you're using the Pathuto module, then you should really be using the Global Redirect module too. Pathauto will create aliases of your normal node paths, which means that you'll have two URLs pointing to the same page on your site. Rather than taking the chance of having both these URLs picked up by the search engines (they'll penalise you for that), the Global Redirect module will automatically redirect queries from the basic node URL to the newly created alias.
Menu Trails
Menu Trails allows you to assign content types to a parent menu item, so that the parent menu item is made active when the user browses to the child page. I also adds extra aliases to the automated alias list in Pathauto, allowing you to create a URL path that's based on the page's location in the menu.
Search Engine Optimisation
Nodewords
Nodewords adds support for meta tag editing.
Page Title
Page Title adds the ability to edit the page title. By default Drupal creates the page title from the title of the node. This module allows you to break that link.
Comments
Anonymous at 17:09 on 17-Nov-2010
Small nit to pick:
"Pathauto will create aliases of your normal node paths, which means that you'll have two copies of the page on your site."
Pathauto will not create two copies of the page on your site.
You'll have a page accessible by two (or more) URLs.
Your caveat about SEO penalization is still relevant though.
Nice list.
Why did you remove Devel module? It's still invaluable to me.
rob at 14:42 on 18-Nov-2010
Thanks for picking that up. The sentence was poorly phrased and I've corrected it.
Have to be honest that I don't use the Devel module very often; it just doesn't fit my current workflow. There are a few more modules I still want to add in to this list, so I might as well stick the Devel in too.






