Drupal (http://drupal.org/) is a great CMS (Content Management System) for developing online communities and sites. This is my simple guide for building a Drupal site.

Note that this is written for Drupal 6.8, but should mostly work for the whole 6.x version series. It may not work for other versions!

Install Drupal

I had the school’s web administrator do this for me. It takes some technical knowledge!

Create a “placeholder” Story

This page is my placeholder: you need to have at least one story created (and set to display on the Home Page) for the default front page message to disappear.

Choose a Theme

Take a look at http://drupal.org/project/Themes, or search around on Google. Once you have chosen a theme, download, decompress and upload it to the themes folder in your Drupal install.

Define Roles

It is worth taking time to consider and define the roles that users will take within your community. If you do this before installing modules, it will save you some time later on when it comes to setting user permissions. This site uses the following roles:

  • anonymous user
  • authenticated user
  • editor
  • read-only guest
  • student
  • teacher

Enable & Configure Core Modules

This section deals with optional Core modules that are already installed with Drupal, but need to be enabled. Each module varies, but you need to consider setting permissions for different users, and then configuring the modules own options.

  • Blog
  • Forums
  • Statistics
  • Taxonomy
  • Tracker
  • Upload
  • Trigger

Taxonomy

In Drupal you can create one or more taxonomies: each of which can contain one or more terms (think tags). This system is initially confusing, but is empowering.

Part of the power here, comes from the fact that you can organise terms into hierarchies, and then use these to organise you site. If you need site structure, then one of the big questions is “node hierarchy or term hierarchy”: in this site I have used terms to organise my content. It took me a while to work things our, and it would have been quicker had I first look at http://drupal.org/handbook/modules/taxonomy.

13/05/2009 – of late I have come to the conclusion to the “node hierarchy or term hierarchy” debate: if you are serious about Drupal you should ignore (and not install) node hierarchy, and instead use taxonomy to organise your website. If you are only a casual user and don’t plan on tagging, then node hierarchy is easier. Using both together will almost certainly give you a headache!

Install & Configure Contributed Modules

The great variety of community developed, contributed modules is part of what makes Drupal so powerful.

For each of the modules shown below, you can download them (from the URL shown), decompress them and upload them to the Modules directory of your Drupal install.

From here, each module varies, but you need to consider setting permissions for different users, and then configuring the modules own options.

You might find some modules require other modules.

  • Administration Menu – gives selected users an enhanced top-of-page administration menu.
  • Pathauto – extends Drupal’s core Path functionality to generate automatic text paths URLs for pages.
  • Table of Contents – allows a Wikipedia style table of contents to be created from HTML tags in a page. After installation, this needs to be enabled for the various input filters you may be using (see below). You will also need to rearrange the filters to ensure Table of Contents is evaluated before HTML Corrector
  • Node Hierarchy – allows for sites to be arranged in a hierarchy, providing structure to your site. Note though that this can also be done with taxonomy, and that this is my prefered method
  • Taxonomy Breadcrumb – allows for breadcrumbs to be create from taxonomy.
  • Google Analytics – allows for detailed statistics to be gathered through Google Analytics.
  • And many, many more…

Drupal allows you to define a number of menus, as well as use the inbuilt menus: Navigation, Primary, Secondary. In this site I have used the Primary menu (in this theme it is shown at the top of the page) to link to the main areas of the site.

Set Content Filtering

Drupal can filter user input. By default, filtering is enabled, but for some sites it is better turned off. This can be done under Input Formats under Site Configuration.

Turn On User Profiles

One of Drupal’s optional core modules is “Profile”: enable this module and you can define custom fields for user to fill in, giving me information about themselves.

User Settings

User settings contains many useful options. Some useful ones include limiting public registration, enabling user avatar images etc.

Comment Settings

Default setting comments for different content types can be configured in the Content Types admin area. Anonymous commenting is disabled by default, but I choise to enabled it (under Permissions in User Management). I have set permissions so that only editors can publish comments without having them approved first. To make approval easier, I used the Trigger core module to have the system send me an email each time a new comment is available for approval.

Clean URLs

By default, Drupal URLs have a query string in them (this looks like ?q=). Enabling Clean URLs overcomes this, making Drupal addresses more like those of a “normal” site. You can access this setting from Admin > Settings > Clean URLs. And, if you installed Pathauto (see above), your URLs should be textual, rather than numeric.