Content Management with Drupal

Using Drupal for Web Publishing

In my last paper, I described the benefits of using an MVC web framework, specifically Django. In this paper, I will look at the Durpal system, which approaches web development from a completely different angle to provide more value for some types of websites.

The basic idea behind Drupal is that very many websites are used as a way to publish written information to the web. For instance, I’m using hafdconsulting.com to explain how my firm can help its clients manage their web development needs.

I do this by writing papers describing the firm’s services, and the benefits they provide to clients. The on‐line news magazine Salon.com uses its website to publish the articles its reporters write. The White House uses its website to publish information written by its staff, which the President wants to make available to the public.

In my paper about Django, I described the concept of CRUD software: software that is focused on creating, reading, updating and deleting data. Websites like salon.com and whitehouse.gov certainly are CRUD websites. Writers create new articles, and members of the public read them. If there are mistakes, editors update them the pages to correct them, and sometimes old information must be deleted.

However, “CRUD” is a very general concept, and for that reason, frameworks like Django are very abstract pieces of software; they want to facilitate doing anything CRUD software is asked to do. But the similarity between salon.com and whitehouse.gov go much further than their both following the CRUD model, since they’re both essentially vehicles for web publishing.

Content Management

For that reason, software has been written that is focused very specifically on publishing written information to the web. In web development jargon, such information is called “content” so a piece of software written specifically for this task is called a “Content Management System,” or CMS.

Unlike frameworks like Django, CMSes tend to be applications that work “out of the box” after being installed on web servers. By default, without any work by a programmer, Drupal has an extensive and powerful administrator interface. It also has a fully functional user interface, with everything being focused on allowing administrators to write articles and users to read those articles.

This is true of every CMS, and is the biggest difference between CMSes and Frameworks. But the Drupal CMS is also capable of being extended and customized by programmers to perform virtually any task needed on the web. Drupal is, by default, a CMS, but it can be extended from there in virtually any direction.

General CRUD Development in Drupal

I mention salon.com and whitehouse.gov because they are two sites that use Drupal. In fact, there are thousands of websites using it, and its user‐base continues to expand. Because of that popularity, and because it has such a flexible design, many plugins, or extensions, already exist to add important functionality.

By far the most important plugins for my clients are “CCK” and “Views.” These two plugins together provide the missing pieces for writing general CRUD applications in Drupal.

I described CRUD in my article about Django. The main point about the model is that the vast majority of business software can be described as mostly performing the functions laid out in it.

That is why, with CCK and Views, Drupal can be extended by programmers to do nearly anything business software might need to do. I’ve been involved with a project that use Drupal as a trouble ticketing system for a corporate IT department, for example. And another that uses Drupal as a web‐based event registration system.

When to use Django and when to use Drupal

If you’ve looked at my paper on Django, you may wonder why this firm offers both technology stacks to clients, as it might appear that there is a great deal of overlap between the two. While Django can be used to build CMS applications (in fact, hafdconsulting.com is a Django‐based website) and Drupal may be used to build any general CRUD application, there are tradeoffs in both systems that tip the scale one way or another based on the specific needs of the client.

For one thing, Drupal is written in PHP, whereas Django uses the Python language.

PHP is not as nice a language as Python. It is missing features that make it easy to rapidly develop quality software, such as exceptions, which allow programmers to rapidly find and fix bugs. On the other hand, PHP is much more widely available from web hosting services. When using Django, one must be careful to choose a hosting provider that has experience supporting Python applications. With Drupal, there are many more choices.

While it’s quite possible to produce very general software in Drupal, because of the advantages of Python, and the more open‐ended architecture of Django, it is usually better to choose Django unless the website being developed mostly needs to serve as a CMS.

For instance, if a client needs a website which will mostly be used to publish articles, but they also want a custom component to get customer feedback, then Durpal may be a better choice. On the other hand, if the customer’s primary use for their website is as an intranet reporting application, or if they need a online store, then this firm will likely be able to offer them more value with Django.

In any case, Drupal is a very powerful and capable open source content management system, one that is currently running behind some of the most important sites on the Internet. By offering Drupal‐based development to clients, I am better able to align the technology offered with their needs.

This allows HAFD Consulting to provide clients with solid value while still producing effective solutions customized to meet their specific requirements.