It is not easy to choose the best drupal modules for your project. Functionality, reliability, security and performance are all terms you should consider when choosing the rights Drupal modules to install in your website. It’s been a while now since the formal introduction of Drupal to the CMS community. Today Drupal is widely used in all all kind of industries and organisations such as The U.S.A. White House, M.I.T. University or even the world bank (See the full list here). Developers from all over the world are joining the community and collaborate with new Drupal modules, templates or testing and improving the core functionalities.
Drupal is a system that doesn’t make a lot of assumptions like other systems do. It’s wide open in terms of what you can do with it, and is meant to be extended, shaped, modded, forged and carefully crafted into a work of art.
Basically, there is a lot to learn when you’re getting started with Drupal. As a Drupal developer I have tried to generate a list of which Drupal modules you need to implement in your basic installation of Drupal.
It is true that today there are some 8000 Drupal modules available only for Drupal 7 which makes it very difficult to choose important and needful modules for your project. Without a doubt many of these modules are abandoned or just forgotten, either because the developer did not have time to maintain it, money … or just another developer has created a much better module. Normally these type of changes are well documented in the Drupal community.
So, if you’re just getting started with Drupal, or you’re not entirely sure what you need to build or the features you need, hopefully this will be helpful. Here are the top Drupal modules I use in my projects.
PS: There are many Drupal modules that I use but not as often that didn’t make the list or modules that I haven’t even heard about. Please leave me feedback in the comments section and let me know which modules you think should be on this list. Thanks!
Drupal Modules for Administration
Admin or Admin Menu
Either module is a good choice for admins/developers to quickly navigate various parts of the site. The Admin Menu module has the ‘inline context editor’ which is very handy for moving blocks around that have been set by Context. The Admin Menu module let’s you navigate through the menu options somewhat faster than Admin module in my experience.
A great tool for developers to backup their View s and content types to code.
Backup & Migrate
A must have utility module for all developers. This allows you to easily dump the sites database minus cache tables which is great for migrating the site across environments. It is also great for scheduled backups that run on cron runs.
A must have tool for developers to debug their sites.
Address Field as a replacement for the Location module which is not yet stable in Drupal 7. Address field allows you to collect an address from within a field and has Views integration.
The new standard for block placement. The admin/build/block page has real limitations and becomes unreadable with larger sites. Context is much more powerful. It’s exportable and you can do more than just block placement. I also tend to use it for adding body classes to ‘sections’ of the site which allows to cleanly separate my CSS styles by ‘section’.
File Field Sources
This has become a must have module because this module allows you to do things like reference an existing file from a file field or a really great feature is fetching a file from an external URL. Useful to add test content to a site.
Allows you to add ‘link’ fields to content and has Views integration.
This handles all kinds of Media, but mostly used with Youtube and Vimeo modules.
Straightforward breadcrumbs when you have a nested links in your primary menu. If you don’t have nested links, it is not as useful. I tend to use this module for my primary menu links and the ‘rules’ module for all of my other breadcrumb rules.
Maybe the most controversial module in the Drupal community because I think the UI turns a lot of people off. I have scaled back on my Panel’s usage on sites in favor of context but I still like using the ‘node template’ panel for rendering the output of a node detail page and also for 1-off layouts like homepage layouts. For these use cases, Panels is very handy.
The standard for automatic path aliasing. A must-have module.
For node & user reference fields, this is the Drupal 7 replacement of the Node Reference & User Reference field modules in Drupal. It’s a very handy module for relating content to other content or user accounts.
Replacement of node relationships in Drupal 6. This is great module for providing a dialog for reference content. Otherwise you are left with only an auto-complete field or dropdown select.
It’s a swiss-army-knife tool for all sorts of tasks that in the past might have required custom code. You can send emails, set breadcrumbs, all sorts of tasks.
This module is very necessary in the Cloud server era. A lot of cloud servers can’t send out email the old fashion way because the Cloud server IP’s are blocked which can be very frustrating. Using SMTP authentication for the site mail is a workaround for this issue.
A new module for Drupal 7. This is very necessary for styling media, for instance if you use the media module it may not be super-obvious that this module is very necessary to alter the output of your media.
A must-have module. This is the reason why you are using Drupal. Views 3 is even more awesome than 2.0.
Views Bulk Operations
A very handy administrative-type tool. On most of my projects, I use this to provide administrator’s with a view-based replacement for the ‘Admin content’ and ‘Admin user’ screens so that we can customize the appearance of those screens.
Replaces Views Custom Field in Drupal 6. Probably not best practice to have a bunch of PHP tucked away in various Views fields but a very practical module for getting a view to work correctly when you don’t have the exact fields you need.
If you don´t have access to the SD Slideshow This module is very common for sites to have something rotating somewhere (including the homepage).
A must-have module for every site. Often used for contact forms and has all kinds of useful functionality.
Block Class allows users to add classes to any block through the block’s configuration interface. By adding a very short snippet of PHP to a theme’s block.tpl.php file, classes can be added to the parent <div class=”block …”> element of a block. Hooray for more powerful block theming!
Simple module for rendering a ‘print’ version of a page or sending a page via email. Can be handy, although I tend to not use this as much now.
Good to give ‘lightbox’ functionality for things like image galleries…
This only applies for sites with e-commerce functionality but Commerce now is the sequel to Drupal 6’s Ubercart. The Commerce module has better integration with other powerful Drupal modules (eg Views, Rules) and is much more flexible.
Boost provides static page caching for Drupal enabling a very significant performance and scalability boost for sites that receive mostly anonymous traffic. For shared hosting this is your best option in terms of improving performance. On dedicated servers, you may want to consider Varnish instead.
This allows you to use Memcache instead of the database for cache tables and really helps the site scale as Drupal interacts with caches constantly.
It is possible that there are newer, better Drupal modules for adding a dialog popup window for adding images to a wysiwyg box but I have been using IMCE since version 4.6 so for the time being I am still stuck on this module.
This module integrates IMCE with the Wysiwyg API module and is a must-have if you are using IMCE.
While I don’t care much for the Nodequeue UI, I haven’t been able to find anything better as of yet. Node queue is good for creating arbitrary lists of content and this module has good views integration. I wish it has a UI similar to Draggable Views which would really make this tool more useful.
Haven’t used yet but revision control is a common request so I am taking a hard look at this module. Allows for moderation of content revisions.
A helpful SEO-based module that helps Drupal not appear to have duplicate URLs so that your site isn’t penalized by search engines.
A must have SEO-based module for every site.
This module allows you to add meta tag information to your site, including node content. This replaces Nodewords in Drupal 6 which was an extremely buggy module and yet was used on 80,000+ sites.
A very simple SEO-based module that allows you to add page titles to your content.
Replaces path redirect in Drupal 7. Haven’t used yet in d7 but a must-have in Drupal 6 for creating 301 redirects.
XML Site Map
An SEO module for providing site maps to search engines.
The Drupal SEO Checklist uses Drupal SEO best practices to check your website for proper search engine optimization. It eliminates guesswork by creating a functional to-do list of Drupal modules and tasks that remain. Updated regularly with the latest techniques, it makes on-page Drupal search engine optimisation hassle-free.
Apache Solr has become the industry standard for faceted searches. Apache Solr can be used as the default Drupal search. Also for newbie developers, ‘Acquia search’ is an option that sits on top of Apache Solr and provides solr indexing as as paid service and is very easy to set up.
Captcha + Recaptcha
Captcha’s are handy for filtering out spam on contact forms. reCaptcha is a much better captcha which acts as a free service. Mollom is also an option but I tend to prefer reCaptcha.
Redirect 403 to User Login
Very handy module for access denied pages! I use this on every project now. This module redirects you to a user login when a user hits a page they do not have access to.
This is a collection of Drupal modules to extend Drupal core multilingual capabilities and be able to build real life multilingual sites.
This module provides icons for language links, both for the Language switcher block and (optionally) for node links. It is a spin-off from Internationalization (i18n) package.
The Translation Overview page provides a table listing the site’s nodes and showing what’s been translated into each language. It also lets you assign priorities for translating nodes into the various languages.
UI for quick translation of taxonomies and menus. The i18n module allows for translation of taxonomy terms and menu items, but the process is tedious – you need to look up strings you want to translate, there is no overview of what’s already translated etc.
This module helps you fix translations on your site as you see the issues. Just by navigating around your pages, you’ll be able to fix translations and fill in missing ones using the on-page translation editor. At the same time, if configured properly, the module also submits your translations back to the community, to localize.drupal.org or any other localization server.
Provides one-way string transliteration (romanization) and cleans file names during upload by replacing unwanted characters.
Utility / API Drupal Modules
From the mind Earl Miles, ctools is now required by Views in Drupal 7 so this is a must have module which helps power other import Drupal modules like Views, Panels & Features to list a few.
Entities are a new Drupal 7 concept, this module is required by a lot of other Drupal modules because it exposes an API to entities, so chances are you are going to need this module installed.
This is required by the Media module, and my knowledge of this module is that it let’s you do things like alter the display of a file field.
Libraries are another new Drupal 7 concept. It is an API module for modules and I don’t know that much about it other than this is a required module for other common Drupal modules.
Great when used with the Features module. This module stores Drupal settings in code instead of the database. This is very handy for Features because it will auto-export a lot of settings for you when you export content types to features.
Has been around for a while and is still great for using placeholders in content, urls, etc. One of the big improvements I’ve been told is regarding performance. I know that token in Drupal 6 was very inefficient and I am told it is much more efficient now in Drupal 7.