The Web Developer's Blog has been discontinued. I am now maintaining a new blog that is related to my company, Blue Piccadilly. The most popular articles from this blog (by monthly page views) have already been republished on the new blog, and indeed those original pages on this blog are being redirected to their new location. I'll probably keep these pages up here for a while. At least until the domain expires.

Essential Drupal modules (revisited)

15-Nov-2010
Filed under: Drupal, Drupal 6.x

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

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.

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.

Very interesting article!

Good article.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <i> <b> <cite> <code> <a>
  • Lines and paragraphs break automatically.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.