For the impatient, click here to dive right into the list!
The joke goes: Drupal doesn't have a learning curve, it has a learning cliff. Funny, but only to those who have strapped on their boots and scaled this steep obstacle, falling numerous times in the process, but living to tell their war stories another day. The question is, is it worth the effort? Absolutely! Drupal is arguably one of the best (if not THE best) CMS's out there. It has amazing core functionality, a community filled with fanatical enthusiasts like myself, and a wide array of contributed modules to fill in all the gaps where you need things just right. And when that fails, you can customize it to your heart's content.
When you put it altogether, you can do just about anything with Drupal. That is, if you have the proper know-how...
Ready to scale the Drupal learning 'cliff'? Strap on your boots!
Image used under Creative Commons from Sirio.
For many, staring at the cliff in front of them can be paralyzing, but it doesn't have to be this way. If you just learn some of the basics about some key pieces and modules, you can at least know what is possible and explain your vision to someone who can fill in the details, and ultimately get the website you want.
The goal of this article is to give you the layman's lowdown on some of the top Drupal modules. Leave a comment if I could make the explanations even better!
What it does: Views allows you to organize, arrange, and display your content based on a variety of criteria (date, time, tags, etc).
Simple example: You want to display a list of titles and dates (but not locations) of your next 12 events that are both tagged with NY and have a price of less than $100.
Unless you're a casual blogger, your website may have different types of content: events, articles, posts, videos, audios, etc. And just like it doesn't make sense to organize and display your photos in the same manner you would a collection of DVDs or magazines, you're probably going to want to display your website content differently depending on the content and the context.
- Events: you may want sorted by date and only list the most pertinent information up front (date + location).
- Articles: it may make more sense to display an image and perhaps a small amount of text.
- Videos: showing in the sidebar doesn't make sense because they probably won't fit. So you'll at most want to show a thumbnail and title.
With views, you can set: your filters (which types of data), you sorting (alphabetical, by date, etc), your display (grid, list, full view), and a whole host of other options. It's so useful that I'd go as far to say it's a mandatory module to include and use on your site, even if you're 'just blogging.'
What it does: Fields allows you to specific types of information to content.
Simple example: An event may get the following fields: date, time, email address, phone number, location, contact person, etc.
When a lot of people think of websites, they think of simply copying and pasting text from a MS word document and (PRESTO!) the work is done. That's fine, but what if you later want to display only parts of that information? Use the event listing in the Views example above. If I just wanted to display a list of dates, I couldn't simply tell Drupal to psychically know which bits of information within the pasted text I wanted to pull out.
However, if I break things up into specific fields, then I have the option to display or not display them on a field by field basis. I can also rearrange their order. I can also validate and force people to enter a real email address versus firstname.lastname@example.org (which garbage-like input that I typically use when I don't want to give a real address).
So fields provides a way to add a little more structure to an otherwise copy and paste blob of information. And if you ever find yourself asking: "Can I just make a list of phone numbers?" You probably should have used fields to divide up the pieces of your content and then used views to output it all.
What it does: Provides a systemwide method to import, arrange, manage, and display your audio, video, images, and documents across the website.
Simple example: I want to upload a bunch of photos and then browse and paste them into specific article posts.
Most people who are not experienced with websites are surprised to find out that it's very difficult to simply 'paste' in their images directly into the site itself. So it can be a huge hassle to manage their media on their locale machine as well as navigate folders and such on the website as well.
The media module provides an elegant solution to this media management madness. It allows you to upload your media content once and essentially browse, access, and insert it everywhere else you want it. It does way more than this, but this feature alone will save you time and improve the quality of your experience managing your website.
What it does: allows you to automate the importation of large quantities of data.
Simple example: a excel document containing product titles, descriptions, sizes, prices, and images is uploaded into feeds and then (POOF) 1000+ store items are now in your online catalog and ready to sell.
Moving from one CMS to another can be very difficult and time consuming. Plus, who has the time or money to do this all by hand? What feeds does is give you several options. You specify the format of your data (RSS, XML, CSV, or other tabulated formats). You specify where it's coming from (website URL or is this a file?). You specify where the data should go (events vs articles). Finally, you can specify how your data matches up to the fields you created ('product name' in your file excel file matches to 'title' in the Drupal content node).
So feeds is a wonderful way to save your sanity and get your content imported fast. Also be sure to check out the migrate module, which is similar in functionality.
What it does: Allows you to save, revert, update, and move your custom configurations across multiple sites without having to manually re-enter them every time.
Simple example: I just created several content types (events, articles, case studies, people, etc) that I want to install on another clients website without spending several, tedious hours putting each configuration in one by one.
This module's name is a bit of a misnomer. When you hear 'features,' you're probably thinking of bells and whistles like what you'd find on a car: anti-lock breaks, power steering, etc. The features module would be more akin to copying these car features from one model (Ford Explorer) and automatically copying them into each other model (Ford Taurus, Escape) without having to start from scratch each time for features that are 95% the same in all cases.
So the features module is more of a container for things that you have created and want to save and port around with you. It's super useful. If someone changes your content structures, features will tell you your configuration was overridden. Want to revert it back? Just click a button. Want to install the same features for 5 different at the same time, the features module will save you hours of time and lots of tedious menu surfing.
What it does: When some event happens, do something if certain conditions are met.
Simple example: when someone logs in, send off an email to the website administrator if the user hasn't written an article in the last 2 weeks.
Rules are made up of 3 components: an event, conditions, and actions. Drupal core and certain 3rd party modules define a wide array of events that can be tracked, such as user events (logging in, logging out, posting comments), node events (content created, deleted, updated), etc. Conditions help filter out whether a response is necessary. We may not want to send an email off to every user in the system, but we might want to send a reminder along to a person who hasn't logged in for several months.
Rules are essentially a handy way of systematizing certain tasks in your website, which can improve the user experience and drastically reduce maintenance requirements. If you find yourself doing the same repetitive tasks over and over again, chances are you can setup a rule to handle it for you.
What it does: Allows you customize the spatial arrangement of how content lays across the page.
Simple example: I want my homepage to have a banner that spans full width, followed by 3 columns of text below that, and followed by 2 banners side by side on the bottom.
Clients love to imagine their webpages as a blank canvas where anything goes and every possible pixel is customizable. CMS's love to provide a more rigid structure by which similar content can pipe through and get a consistent look and feel across large sets of content.
One side wants fully custom, the other wants fully structured. This leads to a healthy tension to try and achieve the best of both worlds. Enter panels, an interface that gives site architects and designers enormous flexibility in how the content gets arranged on the page. And in addition to simple spatial positioning, one can even change what is displayed based a user's permissions and other contextual conditions.
So if you're unhappy with the rigidness of Drupal's block and region system, panels will be your best friend in giving you more flexibility in getting the layout and arrangement you want without sacrificing the power of and speed of using a CMS.
What it does: Allows you to completely manage multiple Drupal sites from a single command line interface.
Simple example: I have to update 30 modules. I could go to each module webpage, download, unzip, and move them all by hand over several hours. Or I could run "drush up" and have the entire process finish in less than 5 minutes.
This is mainly for command line geeks like myself, but don't let that scare you away from understanding the power and flexibility of this module/tool. Like every other major CMS, Drupal is constantly evolving both with bug fixes and feature enhancements. What this means is that there is always the need for continual, ongoing maintenance to make sure your website continues to operate smoothly. And even with a single, small website, thee sheer number of these updates can take up considerable time and mental effort to keep up with.
Drush is an amazing tool that is essentially an air traffic control for every Drupal website you operate. You can check the status, update, and manage multiple sites at the same time and without having to even load up a web browser. For those wanting to spend more time building sites instead of maintaining them, drush is an invaluable tool.
What it does: Skinr provides a front-end way for site admins to change the look and feel of blocks of content without having to know the technical details in the back end.
Simple example: I want to change the color of my menu from blue to green, so I simply click the skinr button on the menu block and select the green style option.
Nobody likes a website that they can't control. Clients can be particularly upset when they realize they can't do minor tweaks (such as the change of a font color in the footer), without going through a long, convoluted process of editing CSS files, committing the changes, etc. They just want a different shade of red!
This is where skinr is extremely handy. Instead of just having a single design, a webmaster can create a series of styles and allow people on the front end to toggle between them. These style differences could be simple color changes, or night and day differences. Also, these skins can be exported and shared among many others as well, allowing designers to use their favorite styles over and over again across multiple websites.
Skinr is not quite ready for Drupal 7, but expect an update soon!
What it does: Overlay allows you to access admin areas without leaving the page you were on in the public areas of the site.
Simple example: I'm viewing a iTunes-like catalog of my media and I'd like to turn on a module that adds a facebook like button. I can do this without having to navigate to the facebook settings page and then have to remember the exact URL I was at when viewing the catalog.
Many people don't really appreciate just how useful the overlay is. To me, it's the number 1 thing that sold me on Drupal 7. I was in the process of developing a catalog view for a piece of software I'm developing. When this started in Drupal 6, it was super frustrating to jump back and forth between pages all the time. I'd keep losing my place and I'd have to bookmark or create links for everything. I started to design my own overlay in jquery UI, but I really didn't have the time to create an entire interface from scratch.
But then I started playing with the Drupal overlay system and I was hooked immediately. I could now do all my back end changes and still not lose my spot. It sounds like a trivial, stupid thing. But try to go back to Drupal 6 after you get used the overlay, and you'll miss it dearly!
What it does: provides you a simple, thin toolbar at the top of your browser where you can access virtually every possible administrative area on your website in a single click.
Simple example: Instead of clicking 4 times to get to the facebook like settings (/admin, then /admin/settings, the /admin/settings/fb_social, then /admin/settings/fb_social/like), I can now hover over each item and watch the sub menus appear, and get to exactly where I want in one click.
"Where the heck is everything?" I asked myself this question over and over the first time I started with Drupal 6. Yes, everything was neatly organized in a neatly defined hierarchy, but that meant you had to do a lot of poking around to see what exactly was 'behind door number 2.'
With the admin menu, you get one thin menu across the top that can get you virtually anywhere in the system within a single click. But beyond the mere speed and convenience, there is a more important benefit. You get the opportunity to explore the entire site structure from a single location. Once you understand the method to the organizational madness, you'll have a better idea of where to look for things when you need them next time. You'll also get better at predicting where new things should appear when you turn them on.
This is the FIRST module I turn on when I do a fresh Drupal installation. Without it, I easily double my time spent just getting around the site.
How can I improve this?
I make no claims that this is a definitive guide, nor do I claim I made this as clear as I could have. So I welcome any feedback, advice, or examples in how I could explain this even better. The better we are at communicating how to use Drupal for those facing the learning cliff, the more likely they will be in joining us on this journey and within our community.
Share the knowledge
And don't forget to send along to anyone else that would benefit from this simple set of overviews. If they get anything out of it, you'll be there Drupal hero!
Drupal word cloud image used under Creative Commons from Blamcast.net.