40 Essential Modules for Drupal 6 and 7
At our recent Intro to Drupal training event, I was asked by a few people for a list of modules I recommend for every Drupal site. I had a specific question for Drupal 6, and while we build new sites with Drupal 7, there are certainly plenty of still maintaining and enhancing Drupal 6 sites, so this list begins with modules which are great for both 6 and 7, and then below I have lists which are different for one or the other, either because they don't exist for Drupal 6, or have replacements in Drupal 7.
For Both
- Admin MenuWhile I actually have a few Drupal 7 sites that didn't use this module, it tends to make development much quicker and I recommend it for at least the initial development phase. I like core's toolbar better for clients once a site launches.
- Better FormatsSubstantially improve your ability to handle Drupal core's input formats.
- ContextControl countless aspects of your site in all sorts of useful ways. You can control layouts and block positioning among other things, and it's all exportable to Features.
- CtoolsIf you don't know that you need it yet, you'll quickly find this as a dependency to many modules. Even if it weren't you can find all sorts of useful tidbits in here if you're writing your own custom modules. DRY code is good code!
- DateHandle dates and date fields in your site. If time matters to you, you probably need this module.
- DevelYou'll need this at some point or another when doing development.
- DiffSee the differences between node revisions or differences in features. If you like to know what has changed on your site, you want this module.
- Display SuiteThis is one of my more recent favorites. DS allows you to control the layout of fields within individual nodes and create all sorts of different displays to be used in different places such as views.
- DrushIf you're not using drush yet, start today. It will save you a ton of time and make you feel more powerful than you really are.
- EmailAdd email fields to your content types.
- FeaturesIt's been a few years since I did development without features, and I don't miss those days. Having features allows you to export configuration into code and move it between development and production environments and keep all of that version controlled. You want this.
- FencesIf you care about your markup, this module gives you the control you need. It integrates with Display Suite and Views and allows you to do symantially correct markup in your site without using 1001 .tpl.php files in your theme.
- Field GroupCombine this again with Display Suite and Fences and you get unparalleled control over the display of your content without touching a template file.
- FlagOK, so maybe you don't need this on every single site you ever build, but this is such a versatile module that you could probably come up with a way to use it on every site, and you think of flag first if you need a way to mark content for almost any purpose.
- Global RedirectPrevent duplicate content to make Google happy. Because we all want to make Google happy.
- Google AnalyticsIf you have a web site, you need to know who's coming to it, where they're coming from, how long they're staying and what they're doing. Google Analytics isn't the only way to do this, but it's a very good one and it's free.
- Libraries APIChances are you'll be using some third party library on your site, and this is the way to do it. Usually you would install this as part of a dependency for another module, but if you're adding your own third party libraries you should use this as well just to keep your site maintainable.
- LinkAdd a URL field to content types or other entities.
- Meta TagFor a while this module was rather buggy, but it has stabilized now and should be considered essential for all Drupal sites to handle a wide range of your SEO needs. (If you're looking for the Drupal 6 equivalent, look to Nodewords.)
- Module BuilderThis is more of a drush addon now than a module, but if you're doing any module development for your site, there's no reason to type everything out by hand when MB can build a skeleton module for you in a few seconds.
- Module FilterThis is by no means a critical module to have, but it is extremely nice as an administrator when enabling and disabling modules on the module page.
- PanelsIf you need a module that can control your page layouts, handle every imaginable context, and do your dishes for you, then look no further. There is some overlap between Panels, Context and Display Suite, but they can all live quite happily on the same site and different ones are good for different reasons. I can very often find a good use for Panels on a site even if I'm not using it to control all the aspects of the layout that it can do.
- PathautoClean URLs matter for a lot of reasons, and this is by far the simplest way to keep them clean and consitent.
- StrongarmIf you're using features (and you should be), you can use strongarm to export settings that features can't export on its own.
- TokenThere are countless reasons to have this module, so just get it.
- ViewsChances are that this needs no introduction, but if you have content on your site, then you probably want to use views to display it for you.
- Views Bulk OperationsExtend views with the ability to select a checkbox and perform actions on your content. This is great for all kinds of administrative pages.
- WebformContact forms, surveys, registrations, and all kinds of other applications have a good use for webform.
- WYSIWYGThere are quite a few modules for doing WYSIWYG, but this has become the standard. Unless you like telling all your users to learn HTML, you should have this module installed.
Drupal 6 only
- CCKBefore there were Entities and Fields in core, there was the Content Construction Kit. This is absolutely essential to Drupal 6 sites.
- FilefieldThis is also in core now, but if you want to add file fields in Drupal 6, this is how to do it.
- ImagefieldExtends filefield to do image handling.
- ImageapiThis is required for doing image processing in Drupal 6
- ImagecacheIf you want to scale, crop, rotate or manipulate images in any other way, you need imagecache for Dupal 6. These are now image styles in Drupal 7 and are a part of core.
- IMCEA good way to add images inside your content in Drupal 6. See the Media module for Drupal 7 as a far superior replacement.
- Node ReferenceRelate nodes to one another.
- User ReferenceRelate a piece of content to a user.
Drupal 7 only
- Entity APIAnother API module which is required by many other modules. This module extends core's entities in lots of useful ways.
- Entity ReferenceCreate relationships between any entities. This is a superior replacement to Node Reference and User Reference in Drupal 6.
- MediaAdding media to content was tricky before the media module. This should be installed on every Drupal 7 site.
Conclusion
Do you have a favorite module that didn't make my list? Add it in the comments so everyone can benefit and I can maybe learn about a life changing module that I've been missing. With nearly 20,000 modules out as I write this, I'm sure there are some gems I have yet to uncover.
var switchTo5x = true;stLight.options({"publisher":"dr-53823897-181c-4461-ae09-5adff87aeeb"});