Drupal - an Open Source Content Management System (CMS)

In summer of 2003, I started looking for a Content Management System that would help make the task of putting content on my web sites easier, and less time consuming.

This was long and onging journey, starting with me being a user, then developer, then contributer to the Drupal project, and on occasions among the top 2 or top 10 contributors to the project.

Read below for how the journey started.

Requirements

My requirements were fairly straight forward, yet unique. These were not clear from the beginning, but evolved gradually as I evaluated various alternatives.

  • It has to be able to use MySQL database as its data store. Not because it is a superior database, but because it is available at hosting accounts, and is simple and easy.
  • It has to be in a language that I am comfortable with, poweful, yet simple, so I can modify it myself if need be. PHP fit here nicely. No Perl please.
  • It has to be able to support several domains on a single hosting account. The reason here is saving money, since I do not want to pay for several accounts, but only one.
  • It has to use clean URLs. In other words, it should not have excessive use of special characters, like ? & and the like. The reason is that these confuse search engines sometimes. Even to a human, the URL http://baheyeldin.com/linux is much better than http://baheyeldin.com/index.php?module=news&section=linux

Evaluating what is available

I first evaluated PHP Nuke, by downloading it and installing it on my home test server. Although it had lots of add-on modules, and themes, it suffered from severe security problems.

Then, I evaluated Post Nuke, which was a spinoff of PHP Nuke. It is more secure, and has lots of modules written for it too.

There are lots of other CMS around, and Open Source too. These include Xoops, Mambo, Xaraya and much more. You can check how they all compare at OpenSourceCMS.

Drupal

I can't remember how I stumbled across Drupal's web site. It was sometime in the summer of 2003, and either through checking Hotscripts or some other program repository, or some other link.

From checking my emails, it was by 13 Sep 2003 that I had test sites up and running and showing them to friends.

For a quick overview of Drupal from a non-technical point of view, check Wikipedia's article on Drupal.

Quickly, I realized how powerful it is as a framework, and how modular its design is. Although other CMS had more modules for it, Drupal was growing fast, and modules were added every day. That power was tempting, and I started to contribute to Drupal. My first contribution to Drupal was on 29 September 2003.

Converting My Old Content

Years ago, I had developed my own handcrafted rudimentary Content Management System to host my web sites.

It used MySQL only for statistics, page counts, and the like. The content itself was in .phtml files, which were PHP files with an include for the header, side menu and footer.

The includes were a set of functions that did various things such as read configuration files, redirect to the appropriate domain, display the standard components, such as the stylesheet, the logo, the top pane, the side menus and the footer. It would also insert statistics and hit information to the database.

Needless to say, this system has outlived its usefulness.

Since I was moving to a new CMS, viz. Drupal, I needed to convert the old stuff to Drupal, and preserve the counters, creation date, and the like.

So, I wrote a combination of shell scripts and PHP scripts that takes the .phtml files, and inserts them in the Drupal database. It also preserves the URL Alias, the visit counts.

I had custom developed PHP stuff way back when, and it worked like this:

  • Each web page was a physical file with .php extension.
  • Every page called a header function and a footer function.
  • There was some PHP code interspersed in the HTML of the content

In order to convert that to Drupal, I created some special migration function that would replace the header and footer, and output HTML, then feed that HTML directly to the database that Drupal would use , thus creating nodes.

I also preserved the URLs using the URL aliasing feature of Drupal, so anyone linking to me would still get the same page.

For images, I created a new directory called "ex/images" under my public_html directory, and changed the old links to this one.

The cutover for the conversion was completed in January 2, 2004, and I have been on Drupal ever since.

Modules

I have also written several Drupal modules, and contributed them to the community. Check the Drupal section on this web site for more.

Contents: 

Comments

Thanks!

Thanks for posting all this great info. It was able to help me out since I'm new to Drupal. :)

Very professional

Congratulations for your professional view and direct solutions!

Sorry my poor english :) from Brasil.

Everyone says that setting

Everyone says that setting up and installing Drupal is the hard part. I’ve found that to not be the truth. Installing Drupal was not any harder than installing any CMS package. You have to know what you are doing, or it will break. Modules are easy to install and manage.

The big problem with Drupal is the Voodoo. Things randomly seem to start and stop working. Permissions issues crop up, and are gone a few minutes later, only to rear up with a death toll finality. Solutions on the community range from effective and logical to total utter flailing around. If you use Drupal be prepared to randomly go into your DB tables and hack things.

I can honestly say that I will never use Drupal again. Unexplained phenomenon are par for the course. Everything is total utter Voodoo, from the way Drupal builds it’s markup and div structure, to theming, to fundamentals like permission controls. If you are at the start of your project and using Drupal, get out now while you still can before you get dragged into the ninth ring of Drupal hell like me.