You are hereDrupal 5 Modules You Simply Can't Live Without

Drupal 5 Modules You Simply Can't Live Without


By Troy K. Schneider - Posted on 10 July 2007

With apologies to Nick Lewis, whose post I read and re-read when wrapping my head around Drupal in early 2006.

Drupal is great. Drupal is modular. Drupal is scary complicated.

Keep all three of those truisms firmly in mind, and you can build a remarkable range of websites without a single line of custom code. Lose sight of them -- particularly if you're the type who doesn't know how to write custom PHP or MYSQL queries -- and you can munge things so badly that the only sane recourse is to delete the underlying database and start fresh. So what's a Drupal newcomer to do?

Nick's "top 10 list," Lullabot's recent "Top 40 Drupal Projects" podcast, and finally Jeff Eaton's post yesterday about building "off-the-shelf" Drupal sites prompted me to finally bang out something I'd been thinking about for some time: Which of the several hundred contributed modules belong on the short list for the rest of us? IE, those who lack the technical chops to do much (any?) custom coding, yet want to build sites ourselves anyway.

You may be asking yourself: "Self, why do I care what Troy thinks? What does he know?"

The answer is not a whole lot, which is sort of the point. This is a list compiled by someone who:

  • Didn't know what Drupal was until February of 2006;
  • Nearly 18 months later, still knows only enough PHP & MYSQL to occasionally be able to decipher and tweak existing code -- often wreaking amazing havoc in the process. Put another way: I couldn't write a module or custom function from scratch if you held a gun to my head.
  • Has now launched a half-dozen Drupal sites -- either built from scratch, or ported over from legacy publishing systems.

So without further delay, here are the modules I'd download to start building virtually any site. All are are compatible with Drupal 5:

1. Views
http://drupal.org/project/views
Unless you'll never anything beyond Drupal's standard "teaser view" for lists of articles/blog posts/whatever, you need Views. It's a bit daunting it its complexity, but that's because it allows you do so much. Filter and sort your site's content most any way you'd like. Let end users filter and sort it themselves. Display results as a list, table, teasers or full documents -- or, if you know basic HTML and CSS -- customize the display however you'd like. (New America's list of cover stories, for example, is a custom-themed View.)

And if you do know your way around PHP, Views' argument-handling capabilities mean you have more options that I can even begin to understand, much less list.

2. Content Construction Kit (CCK)
http://drupal.org/project/cck
Some of CCK's functionality became part of Drupal proper -- aka "core" -- as of version 5.0. But the ability to add new fields to your blog/article/page/whatever still requires this module, and it's hard to imagine a site of any size that wouldn't need such flexiblity.

CCK itself allows for basic text and number fields, but -- as with Views -- this module has spawned an ever-growing collection of "dependent modules" that offer all sorts of options: images, computed fields, dates and more. And together, CCK and Views provide the tools to create sites that a year ago would have required heavy-duty custom coding.

3. Devel (Developer Module)
http://drupal.org/project/devel
As the name suggests, this module is really geared to those who actually know how to code and develop, but it's invaluable for us amateurs too. It includes functions for quickly creating lots of dummy content and taxonomy terms (which I've never used) and makes it easy to "look under the hood" at your content to see what fields and variables are being pulled from the database (which is very helpful when you go looking for help in the Drupal.org forums, and need to accurately describe your problem or question).

This is probably not a module you'd want to leave running once your site is live, but when building and testing, it's huge. The "empty cache" function alone is worth the download.

4. Pathauto
http://drupal.org/project/pathauto
If you're building a 15-page static site, then you don't need Pathauto -- you can custom-name your pages with the Path module that's part of Drupal core. But if all you're building is a 15-page static site, then Drupal is probably overkill to begin with. Go use Google Page Creator instead, and come back in 15 minutes when you're done.

Now, for those of us who are facing slightly larger projects... URLs that are readable by human beings and reflect the page's content are good for search engine optimization -- not to mention appreciated by the human beings who will actually visit/read/link to your site. Pathauto lets you set up standard naming conventions for both content and categories, then creates nice clear URLs automatically as new pages or terms are added.

5. Service Links
http://drupal.org/project/service_links
Once you've worked up the nerve to start poking around in Drupal modules and template files, it's actually quite easy to add in some simple code to provide, say, a del.icio.us bookmarking link for each and every node. But why bother, when this module will provide all the biggies for you?

There are other modules out there that provide service-specific links for Digg, Technorati, etc., and you may find that you need the additional features they offer for a particular service. But for the basic, promote-your-pages toolkit, Service Links is a great place to start.

Plus, it offers several options for how and where to display the service links -- and even provides the code and instructions for dropping the call into your template, in case you need to really customize the placement. If more modules did that, the world would be a better place.

6. Date & Calendar
http://drupal.org/project/date
http://drupal.org/project/calendar
The Date module got a passing mention with CCK above, but it also includes the Date API, without which the Calendar won't work. And if your site features events of any other sort, you want Calendar.

Basically, this module is just an extension of views, allowing you to better filter and sort by date, then display them in one of several familiar calendar formats. But that's like saying that Tiger Woods is "just a good golfer." Calendar module -- and KarenS, the developer behind it -- are awesome.

7. Slideshow
http://drupal.org/project/slideshow
For sites that need a standard image on every node of a certain type (an album cover on each music review, for example), the CCK Imagefield module is a good bet. But when what's needed is the ability to add a gallery of several images on an ad-hoc, page-by-page basis, Slideshow is perfect.

Photos attached to that page become part of the slideshow (PDFs and other types of files still display as attachments in the normal way). The resulting slideshow can be placed above or below the body of the page, or stuck directly into the body content via a [slideshow] tag. And wherever it appears, vistors to the page can scroll through the pictures without ever reloading the page.

It's worth noting that there's another module in the works, called CCK Slideshow, which may be a better fit for sites that already rely heavily on super-customized CCK content types. But for those trying to keep their customization work to a minimum, Slideshow would be my pick. It has far fewer dependencies (CCK Slideshow requires CCK, Imagefield, Imagecache and jQuery_interface), and -- for now, at least -- just seems lighter all the way around.

8. CAPTCHA
http://drupal.org/project/captcha
When it comes to fighting off comment spam, there seems to be a near-religious debate over which tool(s) to use. The Akismet, Bad Behavior and Spam modules all have their fan clubs, and there are others I'm overlooking. But so far, at least, CAPTCHA works for me.

The acronym stands for "Completely Automated Public Turing test to tell Computers and Humans Apart" -- in the CAPTCHA module, it's a simple math question that must be answered correctly in order to submit a comment. See the bottom of this page for an example. And unlike Akismet -- which we use on www.NewAmerica.net, incidentally -- CAPTCHA requires no additional account setups, licensing fees, etc.

9. TinyMCE WYSIWYG Editor
http://drupal.org/project/tinymce
Winston Churchill once said that "democracy is the worst form of government except all the others that have been tried." That's about how I feel about TinyMCE.

This module is huge, requires that you download the TinyMCE editor itself from MoxieCode (it's free), and often requires configuration that could drive one to drink -- especially if you choose to purchase MoxieCode's ImageManager or some other optional plugin. But the end result is a slick, usually intuitive, highly configurable rich-text editor that spares the people entering and editing content from ever having to see an href or h2 tag -- let alone type one. More often than not, that's a gotta-have.

* * *

So there you have it. While there are modules I think are ultimately more important than some of these (Token or JSTools, for example), and modules that I personally think are great (Actions, Contemplate, Revision_Moderation), I'd be hard-pressed to say that every site needs them -- especially if the person building that site is still learning the Drupal ropes. But the nine modules above, in my opinion, should be downloaded and installed from the get-go. After all, you can always turn them off...

It's also worth noting that I came up one module short, compared to Nick Lewis' original 10. That's partly because he undoubtedly knows more about Drupal than I do, but it's also because today's Drupal 5 is just so much better than Drupal 4.6 was in early 2006. Core does more these days, so there's less need for contributed modules to pretty things up or provide basic functionality.

And I'm sure that when Drupal 6 gets released later this year or early next, someone's going to need to re-work this list yet again.