These are some of the thoughts I shared at the Drupal Johannesburg meetup held on 11 March 2009.
So I've got an issue when it comes to having to commit to a favourite something, like my favourite song or my favourite book - to me it's totally dependent on what's going on in my life, and how I'm feeling at the time. And I feel the same thing when I have to choose what my favourite Drupal module is - it really depends on where I am and what I'm working at that specific time, and in reality it's normally a number of modules that have caught my attention, and not just one. That said, here are a couple of modules which are at the top of my mind at the moment.
The Drupal 6 views module
Like many people, it took me a long time to start building sites in Drupal 6, but when I finally made the move, the biggest revelation was the new views module.
What I love most about it is that you can base multiple displays off of one view, using different fields and arguments for each display. Plus it allows relationships, so now I don't have to write any custom code to call up my nodereference data. The UI is much better (lots of AJAX), and you can preview what the output of the view will look like then and there without having to refresh the page. It's a real time saver - respect and thanks to Earl Miles and any others who have contributed to the views module.
Apart from the usual suspects like views and cck, I can't use any images without enabling the imagecache module, as it allows me to do easy image manipulation like creating multiple image versions, each scaled and cropped using different settings. You do this by setting up presets, of which you can create as many as you like, using a number of actions, like resize, crop, scale and sharpen. There are also other imagecache modules which provide additional actions (http://drupal.org/project/imagecache_actions) like watermarking and the adding of overlays. I recently did a site which displays images of properties for sale. If a property gets sold, the property image needs to have a "Sold" banner placed across it. So I created a transparent sold banner, and when a property gets flagged as sold, imagecache automatically overlays the banner across the property image. (See this site at http://www.montaguresales.co.za). I think the killer feature of imagecache is that you can change any of your presets, no matter if you've got a thousand images that have been generated based on that preset. Once you modify a preset (say you decide you want to use a square instead of a landscape thumbnail), you can flush those cached landscape images, and when those images are viewed again, square versions will be created based on the new preset settings.
I'm also quite fond of the nodequeue module which allows you to place and order nodes in a queue without having to rely on sticky or created date for ordering. You can add nodes to a queue using autocomplete, and can change the order of the queue through an AJAX UI.
Thickbox, Lightbox and Jtooltips
Some jquery based modules I find cool are the thickbox and lightbox modules, used for image modals/overlays, and then jtooltips module for good looking tooltips.
Panels and Organic Groups
One of the long-term projects currently working on is NGO Pulse, a SANGONET website which makes extensive use of organic groups and panels.
Organic groups allows you to build communities around topics of interest, and even enables your users to create their own groups. Among other features, group members can post content to their groups, and can be notified of any new group content. Groups can be private or public, and can be free to join or invitation only. A group can have it's own theme, language, taxonomy and more.
Panels allow you to create complicated yet flexible layouts to hold your content. Each panel has a layout (you can choose from predefined layouts, you can create your own layout or use mini panels to place panels within panels). Once you have a layout, you can place as many pieces of content as you want in each panel of the layout - this content can be: a block, a node, a portion of a node, a form, an image, a view, custom php content and more. What's really cool is that you can use "drag and drop" to place your content, and you can even change layouts while keeping all your content.
On www.ngopulse.org we use panels as the default home page for each group, and set it up to automatically display some predefined content for a newly created group. For groups in which we wanted more control, we were able to override the default panel with our own panel pages, allowing us to create tabbed group home pages - see the home page of http://www.ngopulse.org/ for an example of a this.
One problem with panels is that it's not stable for D6 :-(
Check out www.mothersclick.com for another example of a site built around organic groups. This is a site for mothers, which has groups like "20 something moms", "single moms", "working moms" etc. Each group has members who can post to that group and subscribe to posts in that group, a group calendar, a group forum and a group gallery.
Groups.drupal.org is also run on organic groups.
I'm also excited about acquia - check it out at acquia.com. Their most recent offering is Acquia search, based on the apache solr and lucene technologies, which provides really useful faceted search capabilities.
That's my current state of Drupal, at least today ;-)