If you are running Drupal 7, then the list of modules you’ll be installing is a bit different from previous versions. Much of the functionality of modules like CCK is now included in Drupal Core, and that has made a significant impact on the way we develop Drupal sites in D7.
Following is a list of modules that should probably be installed on all D7 sites. While all developers will certainly have their own pet modules they always use, the attempt here is to come up with those modules which are virtually universally needed.
- Views – this module is useful for displaying information and summaries of content on your site. It is generally used by almost all pre-packaged templates and it helps developers avoid re-developing the wheel for a great many tasks which they otherwise would spend enormous time, like creating dynamic lists, and paging through result sets.
- Chaos tools – this module is developed by the same guy who made views. It is necessary for a great many modules which use it’s functionality for developing queries and manipulating objects in Drupal. You’ll end up installing this at some point for every site, so might as well go ahead and slap it on there when you start.
- Admin Menu – This creates the useful drop-down menus in the admin tool bar and speeds up development by reducing the number of page loads you must endure to do every-freakin’-thing you have to do when developing a Drupal site. The trick to this is that you have to disable Core’s Toolbar modules when you enable this, or else it will create a duplicate toolbar when you are logged in (that little tidbit of information will hopefully save you a half hour of Google-ing).
- Meta Tag – Why, oh, why is the Meta Tag module not in Core? You need this so you can modify the meta tags, titles, and descriptions of your pages’ meta tags, duh!
- Block Class – Another head-scratcher as to why this functionality isn’t in Core. This just allows you to assign classes to blocks so you can manipulate them with your CSS file. I mean, give me a break. Why is this not just part of the block module?
- Token – This is a bit like Chaos Tools. You’ll probably never use Token directly, but it is used by other modules like Meta Tag, so you need it.
- Entities – Just like Token and Chaos Tools, you won’t use Entities directly unless you are doing heavy module building, but it is required by useful modules like Commerce.
- Superfish – Adds the pretty UL-based drop-down menus, and it contains some cool transition effects with lots of customization options so you can really “wow” your client.
- WYSIWYG – What You See Is What You Get. Well, not exactly, the WYSIWYG system in Drupal isn’t exactly what you end up with on the final user output, but it is close enough for your site admins. If you don’t add it in the beginning, they’ll just ask for it later.
- Webform – I don’t think I’ve ever built a site that didn’t need this. Why isn’t it in Core?
- XML Sitemap – This is really a suite of modules which are necessary for generating those XML sitemaps that Google and other bots use to scan the site. I’m pretty sure Google can scan your site without it, but if you don’t put it on there, then someone who thinks they know a lot about SEO will come along later and tell your client that you are incompetent for not including it. So, put it on there and set it up to generate a node-level map. It takes about 5 minutes, and saves the pain you would otherwise experience later.
- Media – This nifty little gadget gives you the ability to upload your images to a library so you can use/reuse them in other places. This saves you from uploading the same picture dozens of times for those inevitable places where you need to use the same pic in several locations. As a bonus, it also plugs in with other modules to give you the ability to interface with public media resources like YouTube.
- Views Nivo Slider, Views jQFX (Cycle, Galleria, Imageflow, etc.) – These modules give you the ability to create a slider effect using the Views Module you are going to install on all your sites. Seems like virtually every website these days uses a jQuery-based slider effect, and that’s what these modules give you.
- You can safely turn off Testing. Seems to me that it just throws a bunch of errors, and I don’t need it to build websites, so what’s the point?
- Turn off Toolbar. As stated above, if you don’t turn it off and you have the Admin Menu enabled, then you’ll have two toolbars.
- You can probably turn off OpenID. Unless your site is making use of social media for things like feedback and comments, this isn’t necessary. However, if the site you are building is a content site like a news site or relies on user feedback for content generation, then the OpenID system is pretty slick.
- You can probably turn off Aggregator. The only time you need Aggregator is if the site is collecting XML feeds from external sources. For some sites, this is necessary, but if you aren’t using it then why have the overhead?
- You don’t need Forum. How many dead, unused forums does the world need anyway? And can anyone tell me why Forum is in Core whereas Webform is not? That’s a rhetorical question. I know the answer (Drupal started its life as Forum software). But at this point, that isn’t what Drupal is anymore, so it should probably be moved out of Core.
Modules you can safely UN-install
There are some Core modules that most sites don’t need. If someone thinks I’m making the wrong decision on this, feel free to explain why. I really do want to know. But I turn these modules off for nearly all sites I build.
The Bottom Line
Generally speaking you’ll use most of the modules included in Core, but in order to actually use Drupal you’ll certainly need to install at least some additional modules. The more modules you install, the more work your server has to do to serve pages, and for that reason you want to try to keep the total number to a minimum.
Having said that, you won’t notice a significant performance hit by having a few extraneous modules hanging around your site’s neck. Just try not to get too slap-happy with the module installations. If it doesn’t seem like something you need to get your job done, then it is usually better to leave it off.