So you've decided to go out on your own and you installed Drupal in your webspace. It's running, but it seems clunky and nothing like what you imagined. It's okay, because that's normal!
Drupal is a framework. While it is true that you can run a fairly basic website, blog, or forums right out of the box, it is designed with modularity in mind. This means that to get results from Drupal, you need to install modules that are right for your website.
Every website is different, but there are a few modules that are must-haves in nearly every situation.
Content Creation and Display
- Content Construction Kit (CCK) — CCK is definitely at the top of the list of must-haves. It allows you to define new content types and add custom fields to them. You can create fields for any type of content that you want to have displayed on any node. You might not realize it's true potential until you install Views, though. Nonetheless, no Drupal installation should be without CCK. (Bonus: this is included in core in the upcoming Drupal 7 release, but you still have to install it for Drupal 6.)
- Views — Views is a Drupal developer's or content manager's dream come true. It gives you the ability to render nodes in any way that you see fit using data from the node tables, user tables, system tables, logs, etc. Instead of having to develop a MySQL query yourself (and hope that it is secure), Views does that for you. All you have to do is set conditions that have to be met, define what fields to pull and whether or not to display them, set up relationships between fields from different sources, etc. CCK and Views are awesome together!
- Panels — I used to hate this module, until version 3 came out. Panels allows you to change the layout of your content easily without relying on the block system of Drupal. It can be a lifesaver on super-complex websites it how it seems to be able to solve even the most out-there problems you might run into.
CKEditor — This is my editor of choice, and while there
may beare others out there, they do not exist in my world. CKEditor makes editing your website's content as easy as using a word processor, which means that your secretary who has great writing skills but a small workload can now make changes on your website or update your blog without additional training or worrying about messing up your website!
- IMCE — This is a file browser and image inclusion module for CKEditor (and, I guess the other WYSIWYG editors). CKEditor and IMCE play very nicely together and there is no need for another module to bridge the two. IMCE allows you to browse the files on your server for images to include in a post and upload (and resize) new images if you need.
- ImageAPI, ImageCache, and ImageField — These three modules are absolute necessities, especially if you have an image gallery of sorts anywhere on your website. ImageAPI facilitates low-level interaction with server-side image processing tools like ImageMagick and GD2. ImageCache lets you set up preset for image manipulation (really handy if you need to display the same image in different ways in different places, but don't want to repeat the upload process over and over and over). ImageField gives you a field that is accessible in CCK and Views to upload and display your images. The gallery at Cakes by Darlene is done entirely with these three modules and CCK+Views.
- Lightbox2 — If you want to display images (and other content) in a modal window, this is the module for you. Another plus for Lightbox2 is that it integrates seamlessly with the other image modules listed above and Views. While I did list this under Image Handling because that is where it will most likely be used, keep in mind you can display other content (including iframes) in a modal window using this module.
Search Engine Optimization
- Pathauto — This is a module that absolutely no Drupal website should be without. Pathauto automatically creates semantic URL aliases based on tokens that you set. This is very important because it scores bonus points in Google and most other search engines when there are keywords (such as the title or type of page) in the URL they have in their index.
- Global Redirect — This module helps prevent duplicate content penalties that might arise from using Pathauto. When you use Pathauto by itself, your content is also accessible at its regular url (such as example.com/node/1). Global Redirect searches to find if there was an alias created by Pathauto, and if so it creates a 301 redirect to that alias. This tells Google, other search engines, and browsers that the content has permanently moved to the URL you want it to be on.
- Admin Menu — I admit it, the Drupal administration interface can be clunky and cryptic, especially to people who are not familiar with the system at all. (However, once you get used to it, its rare that it doesn't make logical sense.) By default, many configuration settings and actions are quite a few clicks away, but Admin Menu adds a nice unobtrusive drop-down menu for logged-in users that brings nearly all of these destinations to within 1-2 clicks.
This is not an exhaustive list by any means, and as with anything Drupal, everyone will have their own opinion. I hope this post at least gets you on the right track toward Drupal heaven and not the Drupal Asylum.