Introduction to Jay’s Summer List
There are literally thousands of modules available on Drupal.org. The funny thing is, most developers tend to use only a small percentage of those modules. So out of 16,000+ modules, many developers have only installed up to 200 different modules across their various projects. Furthermore, I think you will find that developers continually use only a few dozen of the same modules on almost every project. It's for that reason why from time to time I like to put together a list of my most-used modules. By doing so, I hope to help new developers figure out what modules they need by narrowing down a list of 16,000 down to around 50 or so modules.
Late last year I released my first top Drupal 7 modules which superseded my original Drupal 6 top modules list. After looking at feedback from my first D7 list, now 6 months later I wanted to give a refresh. As you will see, some new modules have been added to my favorites list while others have slipped in the rankings. This is certainly a subjective list. I am not trying to list the best modules or the newest hot modules out there, this list is all about my most used modules. This to means that if you are a Drupal newbie, you should have these on their radar.
NOTE: that 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 think this is a really good list for newbies to get started with, but I would love for your feedback. Thanks and enjoy!
- 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. I often will enable one of these for admins and use the toolbar for other logins (like editors, tech writers, etc).
A great tool for developers to backup their Views and content types to code. I have given several presentations on features and there is a wealth of information out there.
- 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.
- 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.
- Address Field
I am currently using 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.
While CCK has been moved to Drupal 7 core, as ‘fields’ the CCK module still has some important Drupal 7 tools. This module has migration tools which is helpful for site upgrades from version 6. It also has a PHP filter option for textfield selects, which is a very important feature for some
- Content Taxonomy *New
This module extends taxonomy fields in Drupal 7. I install this module on nearly every project.
The defacto 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 me to cleanly separate my CSS styles by ‘section’.
- DS *New
Display Suite is one of my newest favorite site building modules. I use Display Suite for altering node output (full display, teaser and even search result). I now use the 'node' row style for my views so that I can delegate the node output to DS which makes my views more reusable. The DS Search module is great for allowing developers to render search results as an actual node view module instead of just a search excerpt.
- Email *New
This module allows you to add email address as fields in Drupal 7 which is a pretty common use case.
- Field Collection *New
This modules allows you to create composite fields for Drupal content types. Field collections are 'entities' in Drupal 7. This is a VERY handy module, many times it makes more sense to use a field collection over something like a node reference to another new content type.
- Field Group *New
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 has become a must have module for me 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. I use this all the time when I am adding test content to a site.
Allows you to add ‘link’ fields to content and has Views integration.
For many, this module will replace SWF Tools and/or Embedded Field in Drupal 6. This is a powerful module and I have used it often for adding 3rd party video content to my website. This handles all kinds of Media, but thus far my exposure has been using the Media Youtube and Media Vimeo modules.
- Menu Block *New
Another module I missed in my original D7 post. I have used this on several sites since Drupal 6. This allows you to create new instances of a menu you have created. This is very helpful because sometimes you want to render only a 'slice' of a menu or render it differently depdending on the context in which it's used. I use this module pretty much on every site.
- Menu Breadcrumb
I use menu breadcrumb on most of the sites I build because it offers very 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.
- Panels *Update
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.
UPDATE: I tend to use Panels more sparingly than I used to. Now I use Display Suite for node output and I try to use context for page layouts unless I have a very custom layout. In that case I will still use Panels.
- Path Auto
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 6. It's a very handy module for relating content to other content or user accounts.
- References Dialog
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.
I use this module on every project now. 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.
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 (in my case I’ve used it for Youtube video).
A must-have module. This is the reason why you are using Drupal. Views 3 is even more awesome than 2.0. I really like the updated workflow.
- 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.
- Views PHP *Update
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.
UPDATE: I try not to use views PHP as much these days as it presents a maintenance problem. It is a handy tool but should be used sparingly.
- Views Slideshow
I use this module on almost every project I work on now because it’s 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.
- Colorbox *New
I find that Colorbox is less buggy and more cleanly implemented than Lightbox2. For example, lightbox2 adds too many formatters which can be annonying when you are trying to configure a view or field to use a certain set of image presets.
- Feeds + Feeds Xpath Parser *New
A great module for importing content. I find that many sites need to be able to import syndicated content and this is a great tool for importing content. Some developers even use this for migrating content.
- Flag *New
This is a great module I overlooked in my original Drupal 7 post. I have been using this module since Drupal 6 for things like rating content (creating a 'like' button for example) or flagging offensive comments or 'saving' a piece of content to a user queue. This module is abstract enough that it can be used for all sorts of purposes.
Although this module is somewhat buggy, I still end up using it on just about every project. I haven’t found an alternative yet for using ‘lightbox’ functionality for things like image galleries, so for the time being I am still using Lightbox2.
- IMCE + IMCE Wysiwyg *Update
It is possible that there are newer, better 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 with the Wysiwyg API module.
UPDATE: Consolidated these 2 modules into 1 item, as you really need both together.
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.
- Global Redirect
A helpful SEO-based module that helps Drupal not appear to have duplicate URLs so that your site isn’t penalized by search engines.
- Google Analytics
A must have SEO-based module for every site.
- Metatag *Update
I have used it for a while now and I really like it. 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.
UPDATE: I have removed Page Title from the list because Metatag allows you to add page titles to the page.
- Page Title
A very simple SEO-based module that allows you to add page titles to your content.
- Redirect *Update
UPDATE: Replaces path redirect in Drupal 7. Works great in Drupal 7, I have used this several times.
- XML Site Map
An SEO module for providing site maps to search engines.
- 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.
- Chaos Tools
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 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 modules because it exposes an API to entities, so chances are you are going to need this module installed.
- File Entity
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.
- Apache Solr *Update
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.
UPDATE: This is a great module that I use on almost every project, but Solr search is more of an enterprise type of search so I removed it from the main list.
- Commerce *Update
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.
UPDATE: The Commerce suite of modules are absolutely great, but many sites out there do not have a commerce component at all, so I removed this from the official top 50 list.
- Memcache *Update
I am using this module on just about every site now. If you know how to setup Memcache on the server level then installing the module on Drupal is very simple. 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.
UPDATE: I moved this to notable mentions just because many hosting environments do not have memcache.
- Revisioning *Update
UPDATE: I believe this is a good module for managing editing revisions but I do not use this on every website I build.
- SMTP *Update
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.
UPDATE: I moved this to 'notable mentions' because this module is usually only needed for sites on some cloud servers that have blacklisted IPs. Many sites are on hosts that do not have this issue.
- Print *Update
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.
UPDATE: I don't use this as much because I think a print stylesheet works better than the output you get from this module.
- Varnish *Update
I have been using Varnish on every project for a while now. For non-Acquia sites I install the Varnish module which integrates with Drupal caching API very well. I really like this functionality, I wish that Acquia hosting could support this module (hint).
UPDATE: I moved this to notable mentions just because many hosting environments do not have varnish.
Have feedback? Share your comments below or contact me at twitter.com/drupalninja.