There are a number of sites where one can get technical information about Drupal. That's a good thing and one sign of a healthy, thriving open source project.
I haven't been able to find much information, however, about the practical side of the technology.
Maybe I can help?
This book is intended to be a collection of my travels though a series of problems (as requests from our clients) and their solutions (from the myriad of options available from the Drupal community).
I'm not a programmer (though I play one at work) so I don't plan to provide much code. What I hope to provide is enough information to help others make decisions and solve their own problems -- quicker and easier.
In general, Web communities all use the same modus operandi -- new articles start at the top of the home page (or a Group page) and slide down the page when they're replaced with other, newer articles.
This "river of news" eventually spills off the bottom of the page and into the cold, dark depths of your content pool.
But... but... there's some really good content in the deep end of that pool?!
How do we surface that content and make it easy for users to grab if they're so inclined?
Based on what I learned listening to a podcast about the Lullabot site redesign, I started using a module called "Similar By Terms" on one of our client sites. This module uses taxonomy terms to compare the article a reader is viewing to the inventory of other articles on your site. When it finds complimentary articles, it displays them next to the article being viewed.
Think of it in Amazon.com terms. They are the masters of using data about you (what you bought before, what you're looking at now, what others in your neighborhood are buying [yep, they know that too]) to customize their pages and display items you're likely interested in -- and just might buy.
Here's a quick screen capture I made of the block that showed up next to an article that covered a topic about "Vista migration".
This is an incredibly cool way to churn up old (but still worthwhile) content for readers who are primed to read more.
By the way, there are half a dozen other modules that do similar crunching. I did a quick run through the module list (sheesh, that thing is getting long) and dug up a few options for you to check out.
If you prefer one of these other modules over another, please post a comment and let us know why you like it.
A key to a growing, thriving community is a following of contributors who are empowered to... well... contribute. Making it easy for your members to contribute is a fundamental way to keep them happy, participating, and visiting often.
For the most part, content management systems (like Drupal) make audience participation easy. A good CMS allows users to comment on articles, vote in polls, and even contribute their own stories.
It gets more complicated, however, when you want to empower your users to include images in their stories.
After trying a boatload of file and image management solutions, we've found one, the IMCE module, that goes a long way to empower our users -- within reason.
Our clients are mostly commercial and they (like most clients) want the best of all worlds. They want to leverage the knowledge, enthusiasm, and talent of users in a community. But, ("Everybody has a big but." Pee-wee Herman, 1985) at the same time they want to limit the heft of the images (server space isn't free, ya know), the physical dimensions (oversized images can make a good template go really bad) and, when at all possible, limit users to submitting sizes (or be forced to submit sizes) that fit the corporate design grid.
The IMCE module does a lot to solve all of these problems. And it's fairly easy to set up and use taboot!
Here's what we like about this module:
Here's what we don't like:
This is the IMCE administration page. Notice that different settings and thresholds can be assigned to each role.
This is the file administration tool found under the "Personal files" tab on the user's profile page. I used this tool to create these thumbnails that link to larger originals (and fit nicely in our design grid).
This is the form used to contribute Page content. Notice the "Insert image or link" hyperlink that is automatically added to forms of this type.
You can learn more about (and download) Drupal's IMCE module here: http://drupal.org/project/imce.
Initially, Drupal's Organic Groups (OG) allowed users to create (and self-govern) areas where like-minded community members could discuss topics of interest. As the use of OG grew, it's started solving all manner of challenges for web developers and their business clients. The majority of our clients, for example, like to use OG to separate parts of their community into "neighborhoods" where products can be showcased, customers can mingle, and partners, developers, or sales teams can collaborate.
Businesses, big and small, have to walk a fine line on today's web. They have a variety of audiences to communicate with and unlimited streams of product information to distribute. The task they're faced with is organizing all this information and speaking to all these audiences in a clear, organized (and efficient) way.
That's difficult on a static site.
You usually end up with 1) a page on your web site for each product, and 2) time logged at trade shows and other events connecting with developers, partners, buyers, and end users.
An interactive environment where products cross-sell and up-sell each other and users communicate with the company (and each other) is becoming the ideal.
Drupal and OG give you the power to set up areas or "groups" on your site for as many products or audiences as you like. By keeping all of your products and interaction with your audiences under the same roof, you increase the ability to communicate with a single voice while allowing various constituencies the freedom to interact and evolve as necessary.
Here's a list that is short and to the point but goes a long way in explaining what role Organic Groups can play in a business community.
Remember that like most dynamic community sites, your front page displays a river of *all* (public) information and is constantly updating.
Here's where OG comes in to play:
There is one feature that we have to comment out of the standard OG code for all of our corporate clients: e-mail notifications. Unfortunately, even when content is being moderated, the standard OG package sends notification e-mails to group members as soon as a node or comment is submitted -- before any moderation takes place. Needless to say, corporations frown on systems that forward V!agra e-mails to their installed base.
18 Oct 2007: The current release of Organic Groups (5.x-4.0) fixes the above mentioned problem (sort of). This release no longer sends e-mail notifications about unapproved content. Unfortunately, it doesn't send notifications at all if you have moderation turned on. If you don't use moderation, notifications go out as advertised.
21 Oct 2007: I did a little more experimenting with the newest version of OG and noticed an enhancement that allows you to use the job_queue module to send e-mail notifications at cron time. This is a nice enhancement because it allows you to batch e-mail notifications so your server isn't constantly being slowed down by individual requests to send notification e-mails. Unfortunately, it still doesn't check to see if a node or comment is approved before a notification is sent.
To see how this all comes together, here's how Symantec uses Organic groups to carve out an area of their community where they can feature a specific technology -- Application Virtualization & Streaming.
Notice how all the information in the center column is specific to the featured product. The left and right columns include a mix of product-specific information and other, more general information that helps the reader see beyond the confines of this specific "group".
When you add group functionality to your site, there are certain configuration options that apply to every group on the site. It's helpful to understand what these global settings are so you know what flexibility you do (or don't) have when setting up new groups.
There are a number of configuration options that can be set on a group-by-group basis. This screen capture shows the configuration options available to individual groups.
If you have other examples of how you or your company is using Organic Groups, feel free to post a comment and show us your stuff.
The "Sticky at top of lists" option is very useful if you want to highlight a particularly important story or promotion. But what if you (or your client) want to promote three or four important messages? Do you make them all sticky?
Not exactly.
To be effective, stickies should be used in moderation. If you make more than one article sticky, you lose the impact stickies were designed to deliver. Multiple stickies also push your dynamic news (the stuff your readers really came to your site for) further down the page and possibly (heaven forbid) below the fold.
Here's a solution we implemented using the Node Queue module. It allows you to identify any number of articles and display them randomly at the top of your home page.
Here's the end result:
Here are the steps we used to pull it off.
Granted, it's not rocket surgery, but maybe it'll help someone trying to achieve the same effect. (Or help me remember what I did the next time I'm asked to add a handful of stickies to a home page.)
<?php
function bluemarine_regions() {
return array(
'left' => t('left sidebar'),
'right' => t('right sidebar'),
'content_top' => t('content top'),
'content_bottom' => t('content bottom'),
'header' => t('header'),
'footer' => t('footer')
);
}
<?php print $content_top ?>
<?php print nodequeue_fetch_random($qid = 1, $teasers = true, $links = true) ?>
<front>
You know what drives designers crazy? When you turn their beautiful (stock photo- and lorem ipsum-laden) comps into a community with users who've been empowered to color outside the lines (or in this case, outside the designer's painstakingly thought-out grid).
Case in point, we had a client who commissioned us to implement a pretty straight-forward Drupal design. The design became problematic when we realized users were able to upload all manor of mugshots (tall, skinny, short, stubby, or square) as long as they fit within the 85px by 85px max size restriction we set for picture uploads.
Because of these odd-sized avatars, the working community looked a little "rough". Definitely not as precise and aligned as the designer's comp.
That may not bother you but it really bugs designers (and brand-conscious clients).
So we turned to the ImageCache module.
According to the project page, "ImageCache is a dynamic image derivative generator. It allows you to assign a set of image manipulation functions to a preset and generate images on the fly based on the preset name."
Here's what that means to me:




Nate Haug wrote a very nice tutorial to get you started with ImageCache.
Nate also wrote a complimentary (and indispensable) module that, among other things, adds validation functions to the picture upload form to make sure your users are indeed uploading photos that meet the minimum size requirements you've set. It also does some magic to flush old images from the cache if a user decides to change their photo and upload another. You can get the imagecache_profiles module here.