INTRODUCTION TO JAY’S Top Drupal 7 Modules List
If you have been to the Mediacurrent blog before you have probably seen my Top 50 modules lists for Drupal 6 and 7. This current list will be my final update for top Drupal 7 modules. My last blog from 2012 was in dire need of updating so I have gone through one last time to give our readers my a good list of modules to start with for their next Drupal 7 site.
If you have visited Drupal.org recently you will notice that there are literally thousands of modules available to download. This can be very intimidating for new users who are just getting started building Drupal sites. The secret for newbies to know is that most developers continually use a few dozen of the same modules on almost every project.
As a 9 year veteran of Drupal I like to share my list of modules that I personally use on almost every site I build. If you are just getting started, this is a good list to begin with. If you are an intermediate or even an expert developer it can be helpful to skim the list to see if there are any modules that can help you on your next project.
If you are getting start be sure to take a look at the Panopoly distribution. This is a great way to get a lot of preconfigured modules and editorial tools out of the box. I highly recommend you check it out!
NOTE: I have tried to indicate on the list where I have made changes. You will see several 'New' and 'Updated' labels. 'New' does not mean new to Drupal, but rather new to the list. I've also published my top Drupal 8 modules here. If you're on Drupal 8, be sure to check out that post.
Enjoy! Send your feedback and hate mail to my Twitter account @drupalninja or leave a comment below. Thanks!
Admin Menu *Update
This module adds rollover nested menu items for administrators. The only downside is that the menus are not so responsive/mobile-friendly. When a responsive menu is needed, site builders can opt for the backported Navbar menu instead.
A great tool for developers to and site builders to export configuration to code. Features is often used for deploying configuration from one environment (such as local) to another (such as production). In addition Features is used by many open source distributions.
Backup & Migrate
A must have utility module for all developers. This allows you to easily dump the site’s 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.
Drush + drush make
Drush is the standard for developer command line site administration. If you are not using Drush, you should be. Drush make is great for creating ‘builds’ and is also used in Drupal distributions.
Stage file proxy *New
If you haven’t run into this module then you are in luck because it’s going to make your life easier. Stage file proxy allows you to download images on demand which is extremely useful when you are testing a site locally.
Address field allows you to collect an address from within a field and has Views integration.
Admin Views + Views Bulk Operations *Update
Admin views will replace Drupal core administrative lists with Views. This makes it much easier to modify these lists (such as the /admin/content screen). This module uses VBO which adds bulk operations to administrative views.
This module allows you to add email address as fields in Drupal 7 which is a pretty common use case.
Entity Reference *New
This module is similar to the References module in that it allows you to reference one entity to another. Entity reference is now in Drupal 8 core so this is the module we recommend using. One word of caution, the entity reference select widget can have performance consequences for large lists of content.
This module allows you to create composite fields for Drupal content types. Field collections are 'entities' in Drupal 7. This is a VERY handy module. The module includes Views integration although it can be a bit advanced for novice site builders.
In Drupal 7 you need this module to group fields together on a content type. This is helpful for editors as it provides visual clarity as to how fields should be grouped together on a page.
File Field Sources
This module provides a handy file widget for content forms. The Media module also provides a widget with a popup dialog but sometimes “filefield sources” is a better fit.
Image Link Formatter *New
This module is very handy for the common use case where you want to render an image as a linked image using a link field as the value.
Allows you to add ‘link’ fields to content and has Views integration.
This module is ubiquitous with file field widgets in Drupal 7. The Media module provides an interface for managing media in Drupal and has many extensions available. The downside of this module is that it does have a history of being buggy.
While we avoid using the block module at all in favor of Panels sometimes we will enable the block module solely to be able to use this module. The menu block module allows site builders to create a slice of a menu that can be embedded as a block.
Module filter *New
This module is a must have for the /admin/modules page which can get very long and difficult to navigate. The module filter organizes modules and provides a search box.
Since my last post, the Mediacurrent team (as well as many other Drupal shops) has coalesced around using Panels as the site building tool of choice. With custom Panel layouts you can control the entire page output with the ability to heavily customize the markup. Due to the rise HTML frameworks (e.g. Bootstrap, Foundation, etc.) it is critical to have strong control over the Drupal markup that renders on the page. We find that Panels can handle all our use cases without requiring additional site building tools (e.g. D.S., Context, etc.).
This tool is a nice compliment to Panels, in that it gives editors the ability to customize layouts per entity instance. This gives us the ability to empower editors with much more flexibility in how they build out pages. Panelizer can be used for virtually any entity type and view mode.
The standard for automatic path aliasing. A must-have module.
This module is 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.
Search API *New
For site builders that need to customize search, this module is the only way to go. The Search API will require additional modules (e.g. Search API DB, Search API Solr, etc.) depending on the search engine used.
Smart Trim *New
This module is a must have for site builders. Now maintained by Mediacurrent! Smart Trim gives developers much better options for providing trimmed content teasers.
This is the reason why you are using Drupal. Views in now in Drupal 8 core!
Views RSS *New
Out of the box, Drupal does not give a lot of control over how RSS is rendered by Views. This module allows developers to the tools they need to customize RSS display.
A must-have module for every site. Often used for contact forms and has all kinds of useful functionality.
Feeds + Feeds Tamper + Feeds Xpath Parser *Update
A great module for importing syndicated content. Feeds can also be used to migrate content from one site to another. Sometimes it is easier to use Feeds than the more complex Migrate module. UPDATE: Feeds Tamper is also a good module to include as it lets you fiddle with content data prior to importing.
This module is abstract enough that it can be used for all sorts of purposes. For example, flags can be used to ‘like’ content, flag content as inappropriate, or assign content to a ‘wish list.’
In past lists I have not included Commerce as this module (and complementary modules) are not required unless the site has E-commerce functionality. For sites that do need E-commerce, Commerce is the only way to go.
I have a love, hate relationship with Nodequeue. On the one hand, Nodequeue is good for creating arbitrary lists of content and this module has good Views integration. Other the other hand sometimes there is an easier path to create lists of content (such as a field collection) that is a bit more intuitive for editors.
A handy module for editors to link Wysiwyg (and other content) using a handy little dialog box.
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 required module for every site that needs to track analytic data.
This module allows you to add meta tag information to your site, including node content. A must-have module for every site.
This module is critical for providing 301 redirects on your site. When combined with Pathauto you can ensure that any path that changes automatically has a 301 redirect created. This is important in order to prevent 404 errors for site visitors.
XML Site Map
An SEO module for providing site maps to search engines.
jQuery Update *New
This is a very handy module which allows site builders to upgrade the version of jQuery that ships with Drupal. One of the nice features is being able to specify a different version of jQuery for the administrative theme than is used for the main theme.
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.
Utility / API Modules
From the mind Earl Miles, CTools is now required by Views in Drupal 7 so likely every D7 site will include this module. CTools is an important module for developers who need to create custom plugins and exportables.
Entity + Entity Cache *Update
Entities are a new Drupal 7 concept, this module is required by a lot of other modules because it exposes an API to entities, so chances are you are going to need this module installed. UPDATE: Entity Cache is also a good module to include so that your entities get cached. No configuration needed, this module can just be dropped in and enabled.
This is required by the Media module and extends file types by making them fieldable.
The Libraries module is an API module for modules that makes it easier for module maintainers to include 3rd party libraries in their module.
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, and urls.
Removed from previous list
I used this module quite often for Drupal 6 sites but I now use Admin Menu or Navbar.
Captcha + Recaptcha
Captcha’s are not quite as beloved as they once were for spam prevention. While still an option, there are captcha alternatives such as Honeypot.
This module had some useful functionality when migrating from Drupal 6 but I don’t use this module much any more for D7 sites.
Colorbox is a fairly good lightbox module and so it was a tough call to remove from the list. I think for new users colorbox works great. For highly customized sites though I find custom integrating a lightbox plugin is actually easier than fighting one of the modules to product the output I am wanting.
While this module has some useful taxonomy, the core taxonomy term widget is good enough for most use cases.
While Context has some useful functionality I have found that I can use other tools in place of Context. Panels and Rules most notably provide most of the functionality I used to need Context to provide.
Similar to the Context module, Panels is a suitable replacement for what Display Suite can do. Display Suite’s approach is interesting, and preferred by some users over Panels. For many though, Panels can do more than Display Suite can do alone without requiring additional site building modules.
The Media module adds an image button dialog to Wysiwyg and so I don’t use IMCE any longer.
While this module is useful, it does not handle every use case. Often breadcrumb rules are complex enough to require custom logic outside of Menu Breadcrumb.
References / References Dialog
While these modules are good in their own right, we have migrated to the ‘Entity reference’ module which is included in Drupal 8 core.
This module is no longer needed to customize file entity display.
While this module is handy, it presents a security risk in that you have to enable the PHP module. It is recommended to find alternatives.
This is a good module but I am finding that I would rather integrate a 3rd party jquery slideshow manually as opposed to using Views Slideshow which can be buggy and difficult to customize. That being said, for beginners this is still a pretty good module to use for rotating content.
Have feedback? Share your comments below or contact me at twitter.com/drupalninja.