Drupal

I’m doing a lot of work in Drupal at the moment and the thought occurred that an expanded explanation on the subject would be quite useful – if not now then at some point in the near future. So this post will seek to explain what Drupal is, what it does, and its customisation and extensibility options.

What is Drupal?

From a technical standpoint Drupal is a Content Management System, or CMS. That is, it enables people to set up sites that manage and deliver/present content, as well as facilitate the interaction and activities of project stakeholders and/or site users. This is a very broad explanation of course, and quite appropriately too, because Drupal is many different things to many different people. It is extraordinarily flexible, customiseable and extensible.

As with most projects with a web-based element, it’s important to establish what the holistic needs and objectives – both online and offline – are before examining the technical elements. In the case of Drupal this is particularly important, because you quickly discover a landscape of vast potential in which it’s all too easy to become overwhelmed or distracted by the options and start implementing features that aren’t relevant to the project’s mission or objectives.

So perhaps instead of asking what can Drupal do, it’s better to ask “what do I need Drupal to do?”.

You can certainly visit existing Drupal sites to see how others have implemented the application – and I recommend you do – however this really shouldn’t be done before you’ve established your overall goals. Drupal founder Dries Buytaert has a list of notable sites based on the platform, which is available here. I’ve also found the following to be particularly inspiring:

NB: The above sites are just examples; Drupal-based sites need not be the same size or scale. I’ve seen other examples in which Drupal was used for a single blog, or static website. Your installation can be as rich in functionality, content, and interactivity or as minimalistic and simple as you want it to be.

Customisation and Extensibility

Extensibility refers to the ability to expand the functionality of an environment above and beyond its core toolset. Drupal has this in spades, and does it through a large and growing collection of community created add ons. These fall into two different categories – modules and themes.

Modules

Modules enable you to add additional tools or functionality to your Drupal installation. This is arguably where the power and value of the application is, because the current library is massive and includes some really powerful offerings (I’ve seen figures that list the size of the library at 3,000+ modules*).

[*NB: This is why it's so important to have a clear idea of your project's vision before starting to explore Drupal - it gives you a filter to help locate the relevant modules amidst the sea of irrelevant ones.]

Drupal comes with a selection of prepackaged core modules which can be enabled via the Admin area. You can also download and install additional modules from the Drupal website.

Personally I’ve only scratched the surface of the library and there are undoubtedly invaluable modules I’ve yet to discover, however here are 3 modules I use in every Drupal site:

Themes

Themes control the visual/interface elements of Drupal. By and large this has no bearing on what functionality is made available to users (e.g. what they’re able to do), but rather affects what the site looks like. Make no mistake though, the visual element of a site is extremely important and has a direct affect on how your project is perceived by users. Your choice of visual style will imply a lot about the project, including attitude, values, the levels of formality or professionalism, relation to a larger organisation, and a lot of other characteristics. Choice of theme is a very personally and unique decision that should be carefully considered.

The base installation come with a fairly boring and generic looking Blue interface that you will almost certainly want to replace. This can be done by locating a theme on the Drupal website (or in fact elsewhere on the web), and then uploading it to the ./sites/all/themes folder on your webserver or admin area of your site host.

A Note on Versions

It’s important at this stage to flag the significance of software versions. Because of the fact the core Drupal application, as well as related modules and themes are all developed by the open source community, the Drupal realm in general is very devolved. This means that not all modules work with all versions of Drupal, where the stable version is currently 6.4 and the developmental version at 7.x.

This is a very important factor to consider. If your project’s mission dictates the use of a specific module, but the module doesn’t support the newest version of Drupal, you might need to consider using a previous version of the Drupal core application.

I recommend mapping out your site plan before ever installing anything. Speaking from personal experience, it’s extremely frustrating to realise you have to pull down an entire working Drupal installation because a critical module doesn’t support the version you had in place.

  • I have been using Drupal, not because it's easy, but because it has the potential to do a lot of things. It makes some very difficult things easy, but it also makes some trivial things hard. At the end of the day though, if you can get through the learning curve, I believe it has the potential to allow you to do basically have one CMS you use for practically all your sites.
  • Drupal is definitely a powerful platform, there's no doubt about it. The more I experiment with it the more opportunities I see and ideas I get.

    That said though there are other CMS's and comparable frameworks that are worth considering too depending on your project, and in particular the expectations and technical abilities of the project's administrative and user communities. Elgg and Joomla are the two main ones that come to mind, but realistically WordPress and even BuddyPress might be options as well depending on the circumstances.

    If you take this one step further, in the educational realm frameworks like Moodle or Sakai may prove more appropriate at times too.

    Drupal is absolutely a powerful option, but I think the ultimate decision should be needs-based.

    I'm looking at all of these options right now - which is an incredibly challenging task given the depth each individual platform has - but this does seem to be one of the ways online community development is headed. Many clients/users realise there are numerous options and expect consultants or eLearning people will have a broad knowledge of all the possibilities. So it's a matter of developing a tool box of options that can each be called upon when necessary.
  • Great introduction. And more recently most of the important modules [CCK/VIEWS/Panels] are ported to Drupal 6.4. Nevertheless - there are probably still a lot of site developments where it makes sense to go for Drupal 5.10 instead or face the necessity to develop to much functionality which already exists for 5 but not yet for Drupal 6.
  • Thanks for this overview of Drupal - Drupal is one of the best (or just the best - see awards - http://drupal.org/Drupal-Wins-Best-Overall-2008...) open source CMS
blog comments powered by Disqus