Why I Love Drupal

Drupal is a highly flexible system for building media-rich websites tailored to the designer's imagination. Out of the box it provides a great base for building multiple sites with fluid menus, specialized content, RSS feeds, site search, users, roles and permissions, user blogs and posts, comments, error pages, contact forms, page caching, and other essentials.

Standards

Drupal is made for the way the web works, with scalability in mind. The included themes produce semantic XHTML markup with CSS 2. Dynamic code like AJAX is implemented in modern ECMAScript using JQuery for wide browser compatibility and compact code. Drupal can use any database having a plugin, but MySQL is the most widely supported. Apache and IIS are the best-supported web servers.

From Concept to Content

Have you ever noticed that most websites are just boxes containing sorted lists of things linked to detailed views of those things? The New York Times, The Guardian, Wired Magazine, SlashDot, Google... lists and more lists. Some are laid out horizontally, some vertically, some in grids... but all of them are just big pretty databases. Gathering content together into presentable groups is one of the things Drupal does best.

The basic unit of content in a Drupal site is called a "node." Pages, blog entries, news stories, videos, MP3 files... anything that a site owner would want to publish on a website is contained inside a node. Since all content is the same (except having different kinds of data stored within) it's really easy to do things like display them in sorted lists.

Drupal recognizes the central role of content and keeps it separate it from presentation, allowing designers, technicians, and content creators to focus on their specialties. The Drupal specialist can implement the web site's structure and functionality without needing either the full design or specific content. From the outset, the site in progress provides a gathering-point for team members, and the design and content can be developed in gradual stages. Drupal's flexible layout system allows ideas to be explored without incurring huge costs in time and labor.

Extending Drupal with Modules

Drupal is infinitely extensible through add-on modules that can hook into any stage of processing data and generating pages. Thousands of modules already exist to enhance site content using the latest media technologies like AJAX, Flash, and JQuery, and more are being developed all the time.

I've built several modules for different purposes in my work as a Drupal developer, and I maintain a few useful modules at drupal.org:

  • FancyZoom makes image links zoom the original image. (Here, for example.)
  • ColorPicker provides a textfield that opens up a color picker when you click on it.
  • Animal Kill Counter is an animated counter of animals killed since the page opened.
  • Hidey Help enhances the help block with a "Show/Hide Help" button.

Content Construction Kit (CCK) and Views are a killer pair of modules that provide the basis for prototyping, creating, testing, and presenting content in a highly flexible way. For example, you can use CCK to create a Content Type that combines a block of formatted HTML with a list of images. Using another module that works with CCK, the images can be set up to appear in a Flash slideshow when you view that item on the site.