IBM's Internet Technology Group has written a very nice series of articles on Drupal, the latest of which gives a fabulous introduction to the basics of Drupal.

This article gives you an overview of the Drupal content management system. We'll describe the common building blocks and discuss some common assumptions of the Drupal approach. It is helpful to understand core concepts and basic Drupal terminology as you go through this article and beyond.

The article starts off by explaining much of the Drupal jargon, and does so without falling back on other jargon, which is the first step for anyone wanting to understand the basic structures behind how Drupal works.

For example, explaning nodes:

An important concept in Drupal is that all content is stored as a node. They are the basic building blocks for the system, and provide a foundation from which content stored in Drupal can be extended. Creating new node modules allows developers to define and store additional fields in the database that are specific to your site's needs. Nodes are classified according to a type. Each type of node can be manipulated and rendered differently based on its use case.

Or taxonomy:

The Drupal taxonomy system allows the classification of nodes, which enables the organization of node content on a displayed Web page. This categorization can also be used to modify Web site navigation.

Categories are defined by tags, or terms, and sets of terms can be grouped into a vocabulary. Drupal can automatically classify node content with terms, or node content can be manually classified using associated vocabularies. Drupal also allows free tagging, letting users define their own terms for node content.

Even the concept of program hooks is covered.

The authors also spend a fair amount on Drupal theming and template construction, going through various functions and node presentation hooks available to customize the look and feel of your Drupal content to however you like.

The PHPtemplate engine allows you to map templates to specific theme functions. Theme functions provide generic methods to build Web content that is used by modules providing core functions in Drupal, or by your own modules to extend Drupal.

One example is the theme_links function. Given an array of xHTML anchor elements (links), theme_links will return a string containing these links delimited by a given character. This is an example of a very simple building block....

    function phptemplate_links($links, $delimiter = ' | ') {
    if (!is_array($links)) {
    return '';
    }
    $content = '<div class="links">';
    $content .= implode($delimiter, $links);
    $content .= '</div>';
    return $content;
    }

Okay, so the writing tends to be a little on the geeky side, but this article admittedly is for the geek reader -- probably someone who is either interested in learning how to develop with or theme for Drupal -- but the post is clear enough that it could also be of interest to anyone interested in getting more than the most simplistic sense of how Drupal works.

I find myself hoping that authors Alister Lewis-Bowen, Stephen Evanchik and Louis Weitzman have the time to join the Drupal documentation team

IBM plead the 5th! (via pingv.com)

Comments

bertboerland’s picture

see also this discussion.

update: you might want to digg it
--
groets
bertb

--
groets
bert boerland

rszrama’s picture

And found it to be most excellent! I forwarded it on to a co-worker I'm introducing to Drupal for future work projects. It's a better, more succinct introduction than I could give him in the same amount of time he can take to read it.

Highly recommended.

venkat-rk’s picture

I understood the fundamentals of drupal much much better reading this article rather than anything else I have read in the last eighteen months (except perhaps Robert Douglass' book).

It might be worth exploring getting IBM's permission to feature these articles in the drupal.org handbooks.

Anonymous’s picture

Hey guys, thanks for the great comments. Part 6 is currently being edited and will be posted in the next couple of weeks.

As you can imagine we are trying to be as technically accurate as possible and that takes quite a lot of time during the writing phase. We agonize over each article as we write it and then once more before, during and after the editors go over it right up to the publication date.

We hope that the Drupal community finds these documents useful. We certainly wish we had them when we started working with Drupal!

digg it

calebgilbert’s picture

Am hoping that you might be able to further illuminate something which I've been wondering about since reading part 1...

In part 1 you guys sort of outlined the different packages, the details of each, and so forth - and briefly you touched on why you went with Drupal and/or didn't go with other CMS's, but in retrospect those comments were very brief - especially for the reader-at-home who doesn't have the benefit of seeing your thought processes and/or experiences directly.

For instance about Mambo/Joomla you wrote:

"Mambo was very appealing from the ease of install and the UI, but the development track at the time was fractured and didn't give us any confidence of support."

...and for Drupal itself this was all that was written to describe the affirmation of your choice:

"We did have to invest some time to learn the Drupal way, and the framework just seemed to make sense. We also felt that Drupal provided the right combination of framework and flexibility to break out of the framework when needed to get the job done."

I can certainly appreciate economy of words as much as the next person, but is there anything you might possibly add to the above description(s) to better desribe to someone who was trying to choose a CMS the logic/reasons behind your own choice to go with Drupal / not go with some other package?

I ask because after a certain amount of time it can be really hard for people who work so closely with something to be completely objective about what is good/bad with the object of their attention. Any additional feedback (critical or positive) you could give to the community here, might really be useful for us.

Thanks, and keep up the great work!

Dries’s picture

Hi evanchsa, has IBM additional plans with Drupal? Does IBM use Drupal internally? Any addational insights would be much apprecated. (Drop me a mail if you want to keep this private.)

xpereta’s picture

I've found the articles very informative so far. I'm looking forward to seeing the rest of the series.

Multilanguage sites is one subject that causes a lot of confussion to new (and not so new) Drupal users. It'd be interesting to read how would you deal with it in some of your future articles.

hperantunes’s picture

Part 6th of the series is already published.

http://www-128.ibm.com/developerworks/ibm/library/i-osource6/

smoulec’s picture

I know that Drupal works with PostgreSQL and MySQL backends but I am curious to know if it could work with an IBM DB2 backend (any sql statements specific to these 2 dbs in the code?). Would IBM had plans to implement such a thing?

My company has an iSeries server (formerly known as AS400) that now could support PHP5. It would be great to run Drupal on it using a DB2 database! I have (re)discovered Drupal recently and already use it on internal and external web sites for my company (http://www.cuisinesolutions.com/portal/ already online but going "public" soon). IBM articles have been a great help (for me technically speaking as well as to help me "sell" Drupal to my bosses (IBM backing still goes a long way).

Great software, great articles. Thanks everyone!!

Anonymous’s picture

I'm glad you asked!

We have an article in the works that enables Drupal to run on top of IBM DB2 Express-C v9, IBM's free (as in cost) version of DB2. Look for the article in October.

1kenthomas’s picture

Does anyone still have these pdfs? The design ones were excellent, but I'm unable to locate my copies.

cfrederick’s picture

Did you ever get these pdfs?