what is this thing called Drupal
Drupal Content Management System
The fact that this website is being driven by Drupal is a testament to this amazing open source content management system It's ease of use, simple upgrade path and fantastic range of features is quite astounding.
Drupal's origins are as a tool for building community sites, and as a result it has many features to support such sites. It would make a good choice for a blogging or news site, though it is also capable of supporting a standard website.
Default capabilities
Drupal comes with a standard set of "modules" which provide core functionality. However, because Drupal is very stripped down, some functionality I would consider core to a useful website is not included (e.g. fine-grained access control).
Below are some feature highlights included in a standard installation:
-
Standard web pages and articles: users can edit and publish standard HTML pages using a web browser
-
Simple workflow tools for content publication: for example, can require that new pages pass through a review before going live
-
RSS feed aggregator: can pull in RSS (not Atom) feeds and present them as a set of HTML pages
-
Blog + blog API: can integrate with external blogging tools
-
RSS feed: a feed of the items on the front page is provided by default
-
Archive old content: old material can be presented via a calendar interface
-
Book: collaborative environment which allows a set of pages to be strung together as an online book; could be used for manuals of teaching materials
-
Comments: each content item can present an area where users can append comments
-
Threaded discussion forum
-
Polls: users can post their opinion on a selected topic, and the system will aggregate the responses
-
Content taxonomy: different classes of content can have their own vocabularies associated with them; classification of new content can be enforced, so that any new item must have at least one term from the vocabulary associated with it
-
Throttle: this can be used to turn off data-driven parts of the site when the site is congested
-
Logging: important events and errors are viewable through an online log
-
Cache: dynamic content can be cached to ease the load on the database
-
Search engine: this provides a search across site content, but I have found it unreliable
-
Upgrade tools to migrate from one Drupal version to the next
Additional modules
Additional modules are available from the Drupal website. They are very easy to install: usually, a folder is copied into the modules folder of the Drupal install and that's it; occasionally, the database will need to be modified using a script supplied with the module. Once installed, modules can be activated and deactivated through the administrator interface.
Some of the more useful modules are summarised below.
-
PDFView: convert content to PDF format (use the CVS version, which produces better output)
-
Typecat: display content by category
-
Filestore: upload files to system
-
Spam: detect spam content and comments (download the CVS version, which is stable but has better features)
-
Flexinode: create custom content types (e.g. you could have a "Club" type which let you store details about clubs, their meeting times and dates, and meeting location)
-
Node_privacy_byrole: gives fine-grained control over permissions
-
HTMLArea: WYSIWYG editing of content
-
Atom: add Atom feed URL to page header
-
URLFilter: automatically filter URLs and email addresses in content items, converting them into links
-
Webform: build interactive forms (e.g. feedback or contact forms) via the Drupal administrator interface
One caveat: the code in some of the add-on modules is scrappy (depending on who wrote them). You may find that you need to tweak the code in places. However, I've found the code in the core Drupal modules to be generally of good quality.
Template extensibility
By default, Drupal comes with four themes which are simple and functional, based on XHTML and CSS. None would win a design competition, but they would be OK for a small company website.
Drupal's template "language" is very simple, based on HTML with a few custom tags. They are also declarative, containing no logic, which makes them very easy to follow and modify. A template is entirely contained within a single folder, and can consist of as few as two files; again, this makes it easy to modify and create your own templates.
One issue is that Drupal does not provide very fine-grained control over how text is formatted. For example, some sections of text (like the text describing who submitted a content item) are generated as a formatted string, e.g. "Submitted by elliot on Mon, 2005-01-03 18:56". If you wanted to change this to something like "Submitted by elliot @ Mon, 2005-01-03 18:56" (replacing "on" with the "@" symbol), you would have to edit the Drupal core code. (N.B. you can change how dates are formatted through the administrator interface.)
Having said this, it is possible to replace the entire templating engine with your own, giving finer control over how content is rendered.
Other parts of the look and feel aside from the template can be edited directly through the web interface, including:
-
Menus
New menus can be created; the default menus can be edited or removed; and menu items can be added, deleted or moved in any menu. -
Side bars
It is possible to have no side bars, or side bars on one or both sides. -
Blocks
These are the chunks of HTML making up the side bars which provide site navigation. Many Drupal modules provide a chunk which can be inserted into a side bar: for example, the book module provides a block which shows the books available as links.
Elegance
The Drupal code base is easy to understand, making it ideal for customisation. It incorporates several useful tools to make writing your own modules easier, e.g. SQL functions for executing queries against the Drupal database and code for escaping HTML characters correctly.
Drupal modules also have the potential to tie deeply into the core, as Drupal provides many "hooks" for attaching new code. Drupal calls these hooks at several points during the rendering of a page, and checks activated modules for code which apply at each step. For example, these are some of the places where a module could affect page rendering:
-
When the header or footer of a page is rendered, a module can insert its own HTML
-
When a user submits a new content item, the content can be filtered or validated before it is saved to the database
-
When the administrator menu is displayed, the module can have its own configuration screens made available
Additionally, the design of the core code is modular with the intention of making it extensible, meaning you can ignore it and write to its API instead of worrying about its internals.
- projex's blog
- Login or register to post comments
Current weather
Roanoke, Virginia USA
- Overcast, light rain
- Temperature: 55.4 °F
- Wind: East-Northeast, 11.5 mph, gusts up to 20.7 mph
- Pressure: 999 hPa
- Rel. Humidity: 88 %
- Visibility: 10 mi
Fri, 03/12/2010 - 23:54
Bunch of Twits
- adds 'Thievery Corporation' to his list of groovey background music to play while programming :) — 13 hours 38 min ago
- is watching very serious blokes playing plastic darts.... wtf is that all about? — 1 day 4 hours ago
- has discovered that his mighty hammer Mjölnir is missing. — 3 days 15 hours ago
- grabs a coffee and settles down for a day of post implementation checks, project closure and user documentation... bah! — 4 days 16 hours ago
- is about to embark on an IHOP pancake eating frenzy with the sprogs... — 5 days 15 hours ago
- just watching tv, a female marine running up a beach, teagan says 'i hope shes not wearing heels because thats hard' ;) — 6 days 4 hours ago
- saturday morning, determined to do no work today just gonna hang out with the kids, walk the mutts, watch movies and vejjjjjj... hurrah! — 6 days 13 hours ago
- is al about rpg3, rpg4, php, asp, IBMi, html, xml, wsdl's and any other acronyms I can think of.... — 1 week 1 day ago
- is pretending to type something important to avoid listening to someone talking a load of codswallop. — 1 week 1 day ago
- see... DOTnetnuke.... Microsoft products make my brain shout 'Uncle!' — 1 week 3 days ago
- 1 of 8
- ››

Recent comments
1 week 1 day ago
3 weeks 6 days ago
9 weeks 7 hours ago
9 weeks 3 days ago
9 weeks 3 days ago
22 weeks 3 days ago
36 weeks 3 days ago
38 weeks 2 days ago
39 weeks 2 days ago
39 weeks 2 days ago