10 Must-Have Drupal Modules for Drupal Web Developers

Each Drupal developer out there has their own list of their "must-have” modules. These modules are the tarballs (.tar) that each developer downloads and unzips immediately after installing the Drupal CMS. The following list is partially mine and partially that of my Twitter followers.

This post should help those new to Drupal get started on the right path. With any luck, other Drupal ninjas will weigh in with their must have modules that they can’t live without. If you do share any stellar modules, then we will add it to this list and give you credit for the mention, too.

1. Views

There is a good reason Views is at the top of my list. It is, IMHO the most powerful module of all. Views allows you to create customized lists of content from your database. The views project page on Drupal.org describes Views as:

... a smart query builder that, given enough information, can build the proper query, execute it, and display the results.

To sum it up, Views gives you a very usable interface to create complex MySQL queries which are used to display your content. Let’s say, for example, that you created a content type called “Recipes”. You filled your database with all your favorite munchies. Let’s say you wanted to output all these to the URL path “/recipes”. How would you do this? Views. Or how about a list of the 5 most popular recipes on your site, exposed as a block? That’s a piece of cake with Views. Did I mention Views has its own API?

2. CCK

The second module we install - Content Construction Kit. This module lets you add custom fields to node types. Let’s use the "recipe" example again. Maybe you want to have an “ingredients” field that is separate from the “preparation instructions”. CCK will allow you to add a textarea to your node type. Or maybe you want to have a “Difficulty” field where recipes can be marked as “Easy, Medium, or Hard”. CCK will allow you to add a select menu to your node type with these three options. A few more notable features of CCK:

  • CCK creates all the database tables; people with very little database experience can wield the power of CCK
  • CCK handles simple validation
  • CCK is pluggable, so module developers can write their own “Field types”

The possibilities are virtually endless with CCK. Drupal 7 is apparently going to come packaged with this functionality in Core - that’s how useful this is.

3. Devel

Devel is one of the most useful tools for Drupal Developers and Themers alike. Devel allows you to:

  • print database queries for each rendered page, including execution times
  • expose some handy functions for printing complex arrays in a human-readable fashion (using Krumo)
  • empty cache, rebuild menus with one click
  • generate dummy content (nodes, users, comments) - great for theming and testing views
  • Theme Developer: allows you to click any rendered element; observe which function created it; offers candidate override function and displays available arguments as well as candidate template files

4. Panels

Panels allows you to divide pages into, well, panels. Panels:

  • gives you the ability to create columns, each with different content
  • provides many different configurations and can really add some depth to your pages

It should be noted that as of February 2nd, 2009, this module is still in alpha for the Drupal 6 version. It isn’t really ready for production sites on D6, but still a great tool.

5. Pathauto

Drupal comes packaged with the Path module, which allows users to customize URLs for each piece of content. With Pathauto, you create rules for creating path aliases on the fly. For example you might declare that all nodes of type “Recipe” follow this format: /recipes/Node-Title.

Combine Pathauto's functionality with the Token module, and you have something extremely powerful. A few additional features of Pathauto:

  • it can help organize your content into manageable sections by URL (all "Features" can be found at: /features/*)
  • you can also use Pathauto to define paths for taxonomy terms and user pages

6. Token

Token provides an API that allows other modules to tap into variable bits of text (usernames, node titles, taxonomy terms, etc). This module is required by many current modules, including Pathauto.

7. Webform

Webform allows users with the required permissions to create simple data capture forms - great for creating simple newsletter sign up forms or alternative contact forms. The best part is, the forms are created as nodes and act accordingly. Webform:

  • provides simple validations for radio buttons and email fields, etc.
  • can email submissions to a single or multiple designated addresses
  • allows developers to add custom PHP validation processes and post submission actions (like sending information to a 3rd party service)

8. FiveStar

How many sites out there allow you to rate content nowadays? The FiveStar module, created by the great folks at Lullabot, allows you to do just that. Perhaps the biggest strength of FiveStar - you can attach the rating system to all content types (or just those which you specify). I can’t imagine trying to code this myself from scratch. No thanks! This module also requires the VotingAPI module.

9. Mollom

Without a doubt the best spam protection software for Drupal - created in part by Dries Buytaert (creator of Drupal). This module uses image and audio CAPTHAs, captures statistics, and learns from each site using the service. Mollom is free, but offers a paid premium service as well.

10. Poormanscron

Poormanscron is nifty module that will automatically run Drupal cron operations after a specified period of time. The cron operations take care of loads of behind-the-scenes stuff that keep your site running optimally (search indexing, cleanup of database tables, etc).

One of the best things about blogs is open discussion through comments. Here are some more "must-have" modules for Drupal Web Developers suggested by some of our readers.

Administration Menu

Although we recommended the Devel module in this list, we highly recommend the Administration Menu module, too. If you're a Drupal web developer, this module will really come in handy. When activated, this module will add administration drop-down menus to the top of your website (only visible by the admin, or those will sufficient privileges). Without a doubt, this module will increase your efficiency by lowering the number of clicks it takes to reach certain administer pages. Thanks to Israel for the suggestion!

Drush

Per Drupal.org, Drush is:

a command line shell and Unix scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend most of our working hours hacking away at the command prompt.

If you find yourself using the command line on a regular basis, it may be worth your while to take a look at Drush. Thanks to Shawn for the tip!

Your Turn!

So there you have it: 10 modules (plus the stellar recommendations from our readers) that should help Drupal newbies get started on the right path. Navigating through the thousands of contributed modules on Drupal.org can be a bit overwhelming when you don't know what you are looking for. I’m ready for those Drupal ninjas to chime in any second with their “must-haves” that I missed. Happy Drupaling!