Wednesday, May 20, 2009

DRUPAL: Themes and Modules - Installation and Configuration

In my previous article, I gave a broad overview of my first impressions of Drupal, from extendability to installation and configuration.  Today I'd like to do the same with their Theme and Module systems.

Extendability is one of the major things that make systems like Drupal so useful.  Without being extendable, Drupal would merely be a repository for content.  Extendability is what makes each Drupal-based website unique.  It allows some Drupal-based sites to be blogs, while others are forums-based, and still others are data-warehouse style systems.  And it is Themes and Modules that allow this to happen.

What is a Theme?

Simply stated, a Theme is the site's layout.  This includes background images, coloration, font style, as well as the overall placement of items on the page.  Themes can be table-based or div-based, statically sized or dynamically sized, with all sorts of variations on placement of objects.  The possibilities are pretty much endless.

Themes are developed using a combination of HTML, CSS, and PHP.  Really only a rudimentary knowledge of each of the these three languages is required to make changes to a Theme, but a good grasp is needed to build a theme from the ground up.  So far, I haven't found any tools for WYSIWYG generation of Themes, but I wouldn't be surprised if there's something out there somewhere.  At the moment, the approach I'm taking is to take a pre-existing Theme and modify it to my needs.  From what I understand, this is currently the most common approach to Theme creation.

What is a Module?

Modules are pieces of HTML and PHP code that add functionality to a Drupal site.  Almost everything you see on a Drupal-based site is a Module, from the login box to the main content to the main menu to the navigation.  Adding or removing functionality from a Drupal site is as easy as enabling or disabling the Module that provides that functionality.

Adding your own modules is pretty simple as well.  They're written in PHP and HTML, so being fluent in those languages is very important.  Drupal also has its own API, so being familiar with that is also a must.  I'm still learning the ropes, but fortunately there is a killer API reference right on Drupal's website.

Modules are the key to building a unique site with Drupal.  They are what separates Drupal from, say, a Wiki, which only serves pages of plain text and links.  Modules give the web master the ability to add whatever type of information they want, whatever type of form, and display it in whatever format they wish.  Modules can even be used to build custom interfaces with a MySQL database.


Themes and Modules are the core of what makes Drupal a useful tool for website development.  Themes enable you to build a uniform look and feel for your site, without having to worry about inconsistencies.  If used properly, they can really help take the headache out of the "design" part of being a web master.  For me this is huge, as I am much more of a programmer than a designer.  Get the Theme right, and you're taken care of.

Modules are the meat of the site.  They allow the web master to really customize the experience for his or her user.  Again, as a programmer I appreciate this a great deal.  It will let me collect and display information to my users in the manner that I want to do it.  It will also add the ability for the site to be dynamic in nature, which is a bit part of my design concept.  Before this is all over, I'm going to end up a pro at Modules.

I'm excited to dig into these two systems more.  As usual, I will share my experiences right here.

1 comment:

  1. I've worked more on Wordpress blogs than Drupal blogs, but at one point, I hand tried my hands on setting up a Drupal site and dressing that up with a theme that I just picked up around the web. Compared to Wordpress, Drupal has far less themes and modules to customize a blog/site.

    But to a coder, this is indeed a challenging project!