Getting started with Drupal

Posted on: 12 March 2008

A few weeks ago, I decided that the best foundation for the site I'm working on would be Drupal. After some discussions around the scale of the site and the likely complexity of our customisations, this seemed to be the natural choice. One of the key factors in this decision was the perceived strength of Drupal's architecture. As a fairly seasoned developer, I want an architecture which enables me to customise existing functionality and develop new functionality in a consistent and predictable way, with consistent and predictable results.

My last project used OSCommerce as a foundation, and while I've been able to build a good (if fairly simple) e-commerce site with it, the architecture is somewhat inconsistent. Different parts of the system have varying coding styles and variable naming conventions (which isn't surprising, given it's open source roots), meaning that I have to adopt different coding styles and mindsets when debugging. Not insurmountable, but not a good foundation for great endeavours.

The other key reasons for choosing Drupal were

  • product maturity
  • rich third party module library
  • very active developer community, including conferences
  • large-scale implementations (like MTV UK)
  • open source (i.e. debuggable, extensible, customisable and free!)

So today I've been getting into the nuts and bolts of it. In our sprint planning, we've included some basic user profile functionality, as I thought this would be a good place to introduce myself to the Drupal architecture. Wrong, wrong, and wrong.

One of our requirements is to support multiple user types, each of which will have different attributes. A good analogy (although not an actual example) would be to have

  • car drivers (who might want to add their car make and model to their profile)
  • mechanics (who might want to add specialisms such as engine tuning to their profile)

The core Drupal profile module doesn't support this, but a quick run through the modules list reveals Advanced Profile, which does. However

  • Advanced Profile requires Panels, CCK and Node Profile
  • Node Profile requires Node Family and Subforms

Although it's all pretty easy to install and configure, I'm now trying to get my head around what each of these modules brings to the party, and I suspect this is making my supposed "gentle introduction" more difficult than it really needs to be. Still, I'm sure it will start to make sense tomorrow.