Friday, August 14, 2009

Drupal

At work this week, I've been looking at upgrading our website from the home-built effort that is looking fairly stale to something a bit more modern and up to date. I created the basic framework of the site many years ago, using Apache with PHP on a linux server.

The site is extremely fast, but it is difficult to edit existing content, or add more. Furthermore, there is no database back end for the site, which means no users with permissions approriate to their need.

In thinking about our site redesign, I realized that I should take a serious look at a well supported content management system (or CMS) which fulfilled the following requirements:
  1. Must support user / password logins and configurable roles for each. As an example, there should be an anonymous user role for random visitors to our site, an authorized user role for people who have successfully registered with the site, and then specialized roles such as "content creator", "administrator", "product user under maintenance", "partner", etc.
  2. For the above mentioned roles, different security levels and options should be available. Only users with the "partner" role should be able to access the "Partner Portal" of our site. Only users with the "product user under maintenance" role should be able to download an update to the product in question.
  3. Non-technical people should be able to create content on the site.
  4. It needs to support different visual styles (or themes), and I need to find one that looks good.
  5. Support for new stories, regular pages, and maybe even book-type formats will be needed.
  6. Allow authorized users to comment upon stories and pages.
  7. It has to be flexible.
After looking around a while, I decided to give Drupal a try. I was vaguely familiar with it in passing, but had not yet really tried to do anything with it, which is usually when the fiddly bits will show up.

I downloaded the Drupal 6 Turnkey Appliance ISO, and installed it on new virtual machine using Sun's VirtualBox (which is a great product). Over the course of the last several days, I have been planning and implementing the new version of our website, and have a few observations on Drupal.

First of all, there are many themes available for Drupal, which may be experienced by visiting the Drupal Theme Garden. I have selected a few that I like, with a definite favorite. If you want to know which one I selected, well you'll just have to wait until we roll out the new site!

I have found Drupal to be extremely flexible. It supports a module system where functionality can be added to the core system, taking it the direction you want to go. I have installed modules which allow for access control mechanisms (requirement #2 above), book style content, and a host of others which improve the look and function of the site.

With all of the options and flexibility, starting out can be a bit daunting. Luckilly, the main Drupal website contains some useful documentation to help you understand, install, and then implement it. In my humble opinion, the investment is well worth it if you are looking at a website similar to the one I've outlined above.