Modules extend the core, or ‘out of box’ abilities and functionality of Drupal. If you can think of a function or use for Drupal which is not included with a basic Drupal installation, chances are there is already a module to fit the bill. One of Drupal’s primary strengths as a CMS is the vibrant, active community development of modules, as well as core functionality.
Now to our tutorial; for our purposes it would be best to walk through an actual example. We’ll use one of the most commonly used modules, Views.
First we download the module. Here’s how to find a module, and evaluate its stability and quality. Also, how to choose the correct release version.
Displayed is all the information/links you need to evaluate a module, including: name of maintainer, module description/overview, release versions and a host of support, development and bug/issue tracking links.
On this table you have the module release version (‘5’ meaning compatible with Drupal 5, ‘.x’ meaning compatible with all versions of Drupal 5, and ‘-1.6’ is the version of Views within the Drupal 5 release), the date of release, the size of the module download, a download link and release notes (notes from individual developers detailing issues dealt with or functionality added).
Here you are presented with two main choices: Drupal 5 or Drupal 4.7. This tutorial is aimed at Drupal 5.x users, so obviously you’ll be more interested in the 5.x-1.6 release. Now, you could just go ahead and get this module via the ‘Download’ link, or you could take another minute to make absolutely sure you know what you’re getting into! So in the spirit of gathering all available, useful information before making a tedious, possibly painful-to-undo decision, we’ll explore this module detail page in a bit more depth.
There are many, many releases for the Views module; from 4.6.x-1.x-dev at the very bottom of the page, to 5.x-1.6 and 4.7-1.6, the most recent releases, at the top. One excellent way to judge the quality and stability of a module is to gauge the number of total releases and the amount of time in between releases; this way you can make some very educated guesses at how much use, support and development is going on for a module. If there are only one, or two or three releases, or if development seems to happen once every couple of years or so, then the module is not in active development, which could mean that it is not used due to negative issues and bugs, or there is little demand for the module, so no one really works on it. Choosing modules is sort of like choosing leftovers to eat from the refrigerator; if there’s an old, dusty module found in the back corner of the contributed modules section of Drupal.org, you definitely want to use caution before consuming!
Next we’ll want to take a look at the module issue queue, which is found via a link near the bottom of the module detail page here:
Here is what a module issue queue looks like:
Notice that this page is a list of bugs, problems and incompatibilities involving ‘Views’ module, sorted by the most recently updated. Assessing a module based on this view is similar to an assessment based on analyzing a set of release notes for a module.
You should always go to view all open issues and take a quick look at the queue to see if there are a ton of issues (which may mean it’s either buggy, or more likely very large/complex and popular), or next to none (which usually means it’s new or unpopular), or see if there are any that would be red flags for your particular setup (ie. an issue declaring that this module doesn’t work with another module you’re using). Combining this analysis with the analysis of related release notes can give you a good overall ‘birds eye view’ of whether or not a module, or specific release of a module, is a good match for you installation. Sometimes you just need to install it, to see if it fits your needs and is working properly, but these steps above should give you another tool in evaluating Drupal modules.
Drupal provides a great foundation out of the box, but it is hard to imagine any site that wouldn’t benefit from a few third-party modules for added features. There are several modules that are must haves for any site, no matter how big or small.
Views is a module that provides a flexible interface for Drupal site builders to control how listings of nodes are presented. More specifically, it’s a smart query builder that can build the query you need to display what you want, in a list, table, or full node display. For example, if you wanted a page listing all stories in a particular category, a table displaying sortable job postings grouped by location, or a block listing only blog posts with comments, you would create a “view”. Many other modules use Views as a basis for their functionality.
The Content Construction Kit allows you to create your own Drupal content types with custom fields in your web browser, going beyond simple stories, pages, and blogs. There are also dozens of CCK add-ons for things like images, zip codes, dates, and media, which allow you to easily drop in new field types to your content types, handling all formatting and validation. For example, you might want a “Course” content type that included fields for a room number, duration, and the instructor’s photo.
Pathauto is a module that will automatically create path aliases for several kinds of content, including nodes, categories, and users without actually having to specify the aliases manually. These aliases are based on a "pattern" system that’s controlled by the administrator. You can use this to put dates in your blog post URLs, or add a SKU number to the end of your product node URLs. The Token module is required for Pathauto.
Panels is a module that divides any pages you choose into incredibly configurable layouts ready to drop in bits of content. Used with Views, this is an amazingly powerful way to create custom layouts. You can drop in views, blocks, pages, and pull things from user profiles. It had a drag-and-drop interface and even has features like rounded corners on your panel panes. You gotta try it! Views, CCK, Pathautho, and Panels 2 are the real “core that isn’t in core,” as far as we’re concerned. If you’re building a simple site with just static pages, blog posts, and discussion forums, you can probably make do without them. But as soon as you want to add a list of popular posts to the sidebar, add a bio to the footer of stories, or automatically create keyword-rich paths for your posts, you’ll start wishing they were there!
The Spam Module provides tools that help deal spam content or comments that may get posted to your site. Very useful, as it can unpublish or delete the spam automatically, and is highly configurable. Must have for any site that allows user comments.
This is a tough one. As a developer who has implemented dozens of Drupal sites, I’ve seen the kinds of problems that WYSIWYG editors can cause with creating incorrect code. However, they are a must-have for many site administrators and contributors who don’t know HTML and want a feature-rich editor where they can add text formatting and content easily. You most likely will want one, and there are several integrated with Drupal to choose from. TinyMCE and FCK Editor are the two most popular WYSIWYG modules right now. They are roughly equivalent in terms of features and quality, but you should check them both out to see if one has a feature you need in particular.