Em Space's top Drupal 6 modules (that aren't always in the limelight)

Every development house and their dogs seem to have a 'TOP 10 DRUPAL MODULES - Absolute definitive version!!' blog post somewhere at the minute, and they all tend to be fairly similar - 'Views, CCK, Image' etc...

We have decided to go a different route, and do our own summary of drupal modules (and combinations) that we use all the time, which you may not have used before.

So, here is Em Space's top however-many-we've-listed drupal 6 modules!


Project Page: http://drupal.org/project/drush
Installation: http://cvs.drupal.org/viewcvs/drupal/contributions/modules/drush/README.txt?view=markup

Why do we use it?

While technically not a drupal module, drush (short for 'drupal shell') is possibly the greatest time saver we've used for drupal deployment, development and maintenance.
UPDATE: It's a little old, but just found this short video which sums up exactly how awesome drush is: http://developmentseed.org/blog/2009/jun/19/drush-more-beer-less-effort

What does it do?

Drush is a collection of php scripts that run from the command line (cli), and interact with drupal sites to save time. When I first read this description, it kinda scared me a little bit, but after using drush for a few weeks now I'm totally sold on it. Check out some of the cool things it can do:
Install a new contributed module:
~$ drush dl module_name
~$ drush enable module_name

Update all the contributed module packages that are enabled, then run the drupal update script:
~$ drush updatecode
~$ drush updatedb

Quickly check the site's database connection credentials:
~$ drush sql conf

Create a backup of the database:
~$ drush sql dump > db_name.sql

Content Taxonomy


Why does it do?

Content Taxonomy provides a CCK field type for selecting taxonomy terms. It provides widgets and also takes advantage of CCKs field formatting tools. Essentially, it builds on the Taxonomy module, making it more versatile and flexible.

Why do we use it?


  • Content Taxonomy (like any other CCK field type) allows you to select an input field widget, and display formatters. Don't like the way the Taxonomy module displays your tags? Either did we...
  • It also allows you to specify depths of a vocabulary to select, so you can select an entire branch of a vocabulary if you wanted.
  • The last cool feature is having the option to save the selected terms into the taxonomy module's table too.

Useability - Generally we don't want our clients getting into the content types administration pages. If we were using a simple text field with a select widget, if the client wanted more terms to tag the node with more terms would have to be added to the field settings. That means either we're trusting a potentially untrained mouse pointer into the core architecture of the site, or we have to do it ourselves. Using this module means the client can have full control over their vocabularies by using taxonomy's term administration page, and they never have to visit a field settings page.
In short: The flexibility and beauty of CCK, with the client-friendly category management of Taxonomy module.

Verical Tabs


What does it do?

Vertical tabs is a UI module, which cleans up the look of node forms.
Vertical tabs in use [png]

Why do we use it?

Useability - We've found clients don't particularly like all the fieldsets at the bottom of the node page for 'menu settings', 'publishing information' etc.. Vertical tabs puts all these (usually) irrelevent fieldsets into one 'easy to ignore' box.
Aesthetics - Just look at that screenshot!

Admin Menu


What does it do?

The most downloaded module on drupalmodules.com, admin menu creates a hierarchical, mouse-over, drop-down version of the 'Navigation -> Administer' menu tree.

Why do we use it?

Think about how many clicks through the default navigation menu / page it can take to get to the 'RSS Display settings' tab for CCK: (-> represents a click and full page reload) Administer -> Content Management -> Content Types -> Manage Fields -> Display -> RSS

After that ordeal, how does this sound? (-> now represents hovering over text) Move your mouse to the top of the screen and hover over Content Management -> Content Types -> [content type name] -> Display fields and then click on RSS
You do the math!



What does it do?

Devel is a module which provides various tools and API for (you guessed it!) developers. It also has some packaged modules which can save alot of time and heartache, Theme Developer is one of my favourites, but you can also generate dummy nodes, comments, users, taxonomy terms etc.. among other things.

Why do we use it?

Arguably the best-intentioned, but hardest to use debugging tool in PHP is print_r() which takes an array or object and prints out a structured list of it's contents. Without even going through any of devel's awesome features, this one function makes it worth using - dpm(). Simply pass in any variable, and this baby will show you exactly what is in there, in a fully functional and aesthetically pleasing way! Check out this demo.

Global Redirect


What does it do?

When you are using path module and creating URL alias's, you end up having multiple valid URLs for each page. Global Redirect checks 2 things:

1. Has this page got an alias?
2. Is there a trailing slash/ on the url?

If it finds either of those, it will do a 301 (permanent) redirect to the alias, meaning there will only ever be 1 valid URL - all the others will redirect to that, and that will improve your SEO.

Why do we use it?

For example, for our article entitled 'Drupal training in Australia', if global_redirect wasn't enabled all of the following would be valid URLs:

  1. node/69
  2. node/69/
  3. article/drupal-training-australia
  4. article/drupal-training-australia/

and would all resolve to the same article. We know it's the same page, but a search engine will think they are 4 separate pages displaying the same content, and that will count against your site's SEO. Global Redirect will redirect all of those URLs to article/drupal-training-australia.

Image API, Imagefield & Imagecache

http://drupal.org/project/imagefield (you will also need File Field: http://drupal.org/project/filefield)

What does this combo do?

Combined, these 3 modules form the ultimate image toolkit for Drupal 6. Imagefield allows you to add images directly to nodes through a CCK field. Imagecache allows you to create dynamic derivitives of the original image. That means you can create a 'preset' for thumbnails (eg, scale and crop to 100x150px), and another preset for full nodes (eg, scale to 250px wide). Imagecache will generate these derivitives on the fly, meaning you can change a preset's setting, flush the preset, and all the new derivitives will have those new parameters. Imagecache exposes these as field formatters, so you can have these derivitives appear on teasers, full nodes, RSS feeds, views, whatever you want!

Why do we use this combo?

Prior to these modules, attaching images to nodes and displaying thumbnails and other variously sized derivitives had always been a challenge. Image module (Depracated in drupal 7!!!) used to create a node for every image, and you had to specify all your derivitives prior to uploading it. If you changed your theme's layout, or wanted a larger thumbnail version, you had to go through and re-upload every image to re-generate those derivitives. Bleurgh.

Better Formats


What does this module do?

Better formats basically improves drupal's core input format system.

Why do we use this module?

It allows you to do things such as assign a default input type per-role, make the format box collapsible and control the available formats per-content-type, plus many more.
It's extremely useful, especially when used in conjunction with a wysiywg (http://drupal.org/project/wysiwyg) editor.

Mini Panels


What does this module do?

While many people have heard of the panels module (which recently made it to a stable release!!), not many people we have worked with use a sub-module, Mini Panels. It allows you to create a panel layout, but then exposes that layout as a block.

Why do we use it?

Mini panels is awesome if you have a complex block / panel layout, such as blocks displaying side-by-side within a panel column that has blocks that take up the full width of the column.