Introduction to Jay's List
When a new developer is first introduced to Drupal it can be a bit overwhelming - at last count, there are over 4500+ modules. While it is great that you have access to so many choices, it takes some time to realize that most of what you end up consistently using is actually a small sub-set of 30+- key modules. Keep in mind, this list will constantly be evolving, but my hope is it will serve as a good launching pad for newbies. For me, the game-changing modules have been features, drush, and context in the last six months, which has made a huge difference in the way I setup sites.
Now that you have a starting point, the best advise I can give is to roll-up your sleeves and start practicing. And so this is my list, accompanied with it's own drush make file for easy downloading found here.
Disclaimer: I have compiled this list from Drupal.org case studies, twitter feedback, and other Drupal module lists (references at the end of the article).
Features, drush and context
Features, drush and context have made for huge improvement efficiencies in my day-to-day workflow. Drush is a handy command line tool that's easy to install and can save a lot of time. How would you like to download updates to modules and run the database updates in one command? Type "Drush update" in your site directory and you'll be hooked. Features and context are very much related. Context allows you to organize content in a much cleaner way that the block administration page allows you to. In fact, I don't even use the block admin page at all now. Features is a bit difficult to describe, just know that it lets you groups things together and pre-configure user permissions, context, imagecache presets, views, content types, etc. and encapsulate these items into one feature package. Features make deploying functionality easier and also grab many things that were previously only in the drupal database and puts them in code that is then saved in version control.
A few notable lesser known modules
I'd also like to highlight a few lesser known (and otherwise unrelated) modules that made the list: better formats, drush make, and views custom field. Better formats is a really handy utility module that allows you to set default input formats (full html, filtered, etc) per role, so editors can have full html, while authenticated users have filtered. It seems like this should be a core feature, but it's not. I am now full addicted to drush make, which is an extension of drush that allows you to download you own custom build of drupal with any modules, 3rd party libraries, themes you want. You can even put together your own drupal distribution with a drush make file. Finally, views custom field is a really handy view module that allows you to create a view field with PHP. This can help fill the gaps when you're setting up a view and can't get the field to look exactly how you want.
Current module count: 54
- Administration menu:
For admins/developers to quickly navigate various parts of the site. I have used alternatives such as the admin module, and this is just much, much faster.
- Admin role:
Add multiple super users which is not possible by default.
- Block edit:
Context-sensitive admin hover links. I have leaned towards block edit + admin menu because the admin module has some things that annoy me still, d7 might make some inroads related to this.
Pre-configure modules, create "packages" containing modules, views, imagecache, etc that can be shared, easily deployed - also makes code more readable in my opinion.
For administration/developers, no phpmyadmin access needed, and it will not include data in cache tables by default which is a big time saver.
For debugging, comes in handy
- Drush + drush make:
Command line drupal tasks, absolutely amazing and can be extended as well. Drush make is a huge time saver for setting up new sites and can also be used to create Drupal distributions.
Content management & editing
- Better formats:
This module may not be well-known but is great when paired with any Wysiwyg module. It allows you to set default formats based on roles which is critical because Drupal does not handle this well by default.
- CCK (+date, link, image field, image api, file field, content taxonomy, embed field):
CCK will be core in d7, absolutely a must have module and there are various additional CCK modules that are great as well, most notably content taxonomy adds more flexibility when relating taxonomy to content.
- Content management filter:
For editors to filter content with more options than the default content management screen gives.
Kill the admin block screen forever! Create sections of content more cleanly than the admin block screen and contexts can be exported as features
For image thumbing, an absolutely critical module. So many options I wonder how I ever lived without it (a long time ago).
For adding locations to content
- Panels (+ctools):
Panels might be a bit controversial, I like them for layouts. They can be used to do some things that context does, I personally use context for creating 'sections' on the site and I use Panels mostly for homepage layouts (especially the front page).
- Vertical tabs:
For cleaning up content editing options, this functionality will be built into drupal 7. I love how cleanly it combines what used to be a bunch of collapsed fieldsets.
- Views (+views slideshow, views custom field):
No question a top 3 module, for displaying lists of content on pages and blocks, the more you use views the more applications you find for using them in places you might have thought previously would require custom code. Views custom field is a lesser know views module that helps fill in the gaps from time to time by allowing PHP to be used to customize a field. Views slideshow is a great module for rotating images which is a common feature on many sites.
For submittable forms, a must have for any type of contact form.
- Wysiwyg API + IMCE:
For content editing, Wysiwyg API supports many 3rd party Wysiwygs and I like how it loads only when the correct input format is selected. IMCE is big for image uploading.
- Fivestar (+ Voting API):
For content rating, very simple to add rating of content and filtering/sorting by ratings in views
Great generic module for flagging content for any reason, bookmarks, inappropriate content, etc.
- Jquery UI:
Adds access to various jquery plugins in a clean way, also is a helper module for some other contributed modules
Absolutely perfect for most sites to easily lightbox any image, many CCK + views options
- Print, email & PDF:
Easy print version for content, PDF is more difficult to install but email and print turn on easy
Solid module for authenticated user caching, can be used with boost
Really fast anonymous caching
For simple moderation of content (easier than workflow).
Been the standard for a while to allow editors to queue arbitrary content. Good integration with views but lacks features export support and isn't the most intuitive workflow but pretty solid.
Easy way for editors to schedule content to be published which is standard practice for a lot of publishing websites.
A bit of a learning curve required but good for more involved workflows where say content has to be approved by various roles for example to be published. Many uses for this module.
- Content profile:
Ultimate control over user profiles because it uses CCK to manage profile fields.
Great spam control module
Ubercart (+uc recurring when needing subscriptions):Looks like it will be eventually replaced by a different E-commerce package in drupal 7, but the only way to go for < d7.
- Unlimited CSS:
This is an easy IE fix for 30+ stylesheets (by using @import instead of <link>), typically needed in testing when caching is turned off.
- Global redirect:
Something to do with eliminating duplicate urls for content (I know I need it)
- Google analytics:
Much more options and cleaner than just pasting google analytics code in the page.tpl.php
Many options for modifying keywords and more related to SEO
- Page Title:
Modify page titles via patterns, can use tokens
- Pathauto + token:
Pathauto adds patterns for content, taxonomy and token is absolutely brilliant - add token placeholders for dynamic content in many various contrib modules
- Path redirect:
This redirects old paths to new aliases and thus prevents broken links in search engines
- Lullabot Top 80 Module List
- Nick Lewis's Top 40+ Module List
- Another Module List From AdAstra
- Drupal.org module page
- Drupal.org Showcase
- Drush make download for Jay's 50+ Module List
I'm sure there are many good modules out there that could make the list that I'm not at all aware of; please add your recommendations in the comments or contact me on twitter.com/drupalninja. Thank you!