Drupal is our favorite CMS. One of the major reasons we love Drupal so much is the huge community of developers and large number of contributed modules available. If we were in the business of building cars we probably wouldn’t go about designing new tires for it. Instead, we would rely on tire manufacturers who had already done the R&D. The same holds true for websites. When a website requires common functionality such as a blog or forums we use pre-existing modules which offer a framework for us to build from. In our day to day development we use a LOT of modules. We’ve listed our top 50 here for you to browse. A large number of these have been moved to Drupal core as of version 7, but it’s important to list them regardless as many sites are still being built/maintained in Drupal 6.
CCK is probably the most valuable module in this list. Combined with Views, CCK allows us to create detailed lists of almost any type of content you can think of. CCK gives us the ability to add fields to different types of Drupal content (nodes).
Views builds on CCK by constructing complex SQL queries behind a friendly user interface. Views can present content in lists, grids, tables, and a number of other styles. You'll rarely see data listed on a Drupal website that doesn't rely on Views.
Pathauto takes a Drupal system url such as 'node/123', and turns it into a human-readable path like 'blog/post-title'. This is a must for every modern Drupal website.
We generally use token only because it is required by many other modules, though we have made use of its API to expose custom tokens in a few larger Drupal projects as well.
FileField is an addition to the CCK module. FileField adds the ability to upload files of varying types to custom content types.
Imagefield builds on the FileField module by including image thumbnail/previews after upload and allowing for the display of images on nodes.
ImageCache handles image processing on images through Views or simply on node displays. Using this module you can automatically scale, crop, and resize images to suite your layout.
ImageAPI is a dependancy of ImageCache (and ImageField in older versions). Using either the GD2 or ImageMagick libraries, ImageAPI handles image processing behind the scenes.
The ImageCache Actions module adds a plethora of additional processing styles to the ImageCache module. Watermarking, Overlays, Color-shifting, Alpha blending, Canvas manipulation, Rounded corners, and many more.
Administration menu is more of an internal tool. This module displays a sleek menu at the top of the page with access to the full administrative panel. Though our clients rarely see this, it can be a real time-saver during development.
The Date module compliments CCK by adding a date specific input field. This can be helpful when creating calendars, or chronological listings.
Once the date has been entered using the Date module, we use the Calendar module in conjunction with Views to present a visual calendar display for the end-user.
CKEditor is a popular WYSIWYG editor that has been integrated with Drupal via this module. We like it because it is easy to configure and customize.
IMCE seamlessly integrates with CKEditor, allowing users to upload images directly into content.
Google Analytics is a full analytical suite for tracking your website traffic. The module adds all necessary tracking code, while caching it locally for faster loading.
The Webform module offers a convenient way for website administrators to add functional forms. This can be helpful for contact forms, or similar.
This module is a wrapper for the jQuery UI library. We often use jQuery UI to add dynamic eye-candy to our sites.
Link expands CCK to include a link field. Complete with URL and title, the link module can even be configured to open links in a new window.
Much like the Link module, the Email Field module adds a text field to a custom content type. Email addresses are validated, and can be used to generate node specific contact forms.
The nodewords module (otherwise known as the meta tags module). This SEO-centric module adds meta tags such as keywords, description and canonical URL.
To maintain module integrity, Drupal ships with a slightly outdated version of jQuery. This module simply updates core to the latest version.
It's better to be safe then sorry, and for that reason we employ Backup and Migrate on every new site we build. This module can be configured to store regularily updated database backups.
Another module for your SEO needs. XML Sitemap does exactly as the name states, it generates an XML sitemap for Google, Bing, etc.
Devel is an internal development tool made famous (in some circles anyway) by the dpm() function. Useful for debugging stubborn code, it is rarely used outside of PHP documents.
Sites that use the pathauto module should display user friendly urls, but that doesn't mean google sees it that way. Global Redirect ensures the proper redirects are in place to point to the safe urls.
One of the most important aspects of SEO is proper page titles. Using this module you can specify custom page titles, or page title patterns for individual content types.
Fivestar is a voting module which allows users to rate content out of 5 using a starred voting widget.
The Voting API is the backbone of voting modules such as the aforementioned Fivestar.
Views Slideshow allows views content to be displayed using various transition effects. This is usefull for presenting nodes in a slideshow, or carousel.
Rules is a replacement for the core trigger module. It conditionally executes actions based on configurable events. One use might be to have the system send an email to administrators when new content is posted.
In core, profiles are not built as nodes, but the Content profile module changes that. Once profile information is stored in nodes, it can be accessed and displayed using modules such as Views.
This module presents Printer, e-mail and PDF versions of all content. Small icons are displayed on the bottom of each node which link to their respective content.
Nice Menus are used wherever drop-down or fly-out menus are needed. Nice Menus are fully configurable, and themable with CSS.
Embedded Media Field is an add-on for CCK which includes fields for many different types of media. Popular uses include Youtube and Vimeo video fields. Users can simply enter the url of a video, and the embed code will be built on the fly.
This module adds the option of logging in using either your username OR e-mail address. A small but effective usability improvement.
The Admin role module allows the admins to define additional roles which will mimick user 1. This role always retains full permissions.
Drupal requires that the node title exist for technical reasons but there are a few scenarios where you don't actually want the user to see this field. Automatic node titles allows you to specify a title pattern, and hide the field completey.
Ubercart is a complete ecommerce suite for Drupal. Handling everything from the shopping cart to the payment processing, Ubercart is the best way to sell online.
Menu Block produces blocks which can be configured to show portions of the menu system. This is used on many websites to display lower depths of the menu while browsing a particular section of the site.
The location module allows location data to be stored with nodes, either by way of CCK or its own custom fields. This data can include addresses, countries, as well as lat/long coordinates.
Used in conjunction with the Location module, Gmap allows location enhanced nodes to be displayed visually on a Google map. It also offers a view style display so that maps can be customized to suit your different content.
The Vertical Tabs module enhances Drupal's backend by presenting fieldsets in a tabbed interface.
Mollom integrates Drupal forms with the web service that helps identify content quality and stop spam. This can be a real life-saver on high traffic community oriented websites.
Drupal's standard taxonomy input interface is slightly lacking, and sometimes you'd prefer if the data was stored similar to CCK. This module exposes taxonomy term selection to new CCK select fields. It can be configured to store the data separately, or in addition to core taxonomy.
The flag module allows content to be 'flagged' for various reasons. A common use is for content to be 'marked as spam', or to allow users to 'report as abusive'.
This is almost a mandatory module for any community based website. The core Drupal forum is quite lacking in functionality, and where it fails Advanced forum fills the gaps. This module modifies much of the standard forum markup, allowing for much more advanced theming.
The Views attach module allows views to be attached to particular types of content.
The Feeds module is extremely powerful, and can be used for a number of different reasons. We've used Feeds on everything from mass node imports, to scraping images and content in large news aggregators.
Well that's our list. If you think we missed anything important let us know in the comments below!