Friday, January 26, 2007

Content Abstraction in the Joomla! CMS

I've been evaluating Joomla and Drupal (and looked briefly at Plone) for the CMS of iGEM2007.com Superficially, I've gotten some bad vibes about Drupal from the developer of a big site that is based on it, popsugar.com, and from attendees of MashupCamp3. Joomla seems newer and brighter and in a way, more promising. But it doesn't seem to have as robust documentation or as established a user & development community as Drupal, and it also doesn't seem to be as flexible in terms of extending it in ways the core developers hadn't expected. I feel pretty confident that we could use and extend Drupal to do what we want, but I'm not sure about Joomla, so I'm giving it one last hard look-over. I'd like to use it if we can.

I found the following buried in a visual tutorial in part of the Help section of Joomla.org. I don't know why it isn't prominently displayed on the first page of the developer docs - I think it should be.
One way of looking at Joomla is that a Joomla site really only consists of one page (plus a lot of content stored in a database). As you click on menu items, Joomla rebuilds the content of that one page, as if you are navigating to another page.

When you click on a menu item, that menu item is going to load a single main piece of content, such as an article or list of articles, or calendar or whatever else into wherever you've specified to be the main content area in index.php.

In addition, modules, that is, all of the smaller items such as menus, are going to either display or not depending on whether you've configured them to show for that menu item.

The idea of Joomla is to build a site not by creating pages, but by configuring menu items. A given menu item will load a particular main content item, plus whatever modules you want. The modules are always displayed in the location as set up by index.php. (However, you can make it appear as if modules move to different places on the page, however, by cloning modules, placing them in more than one location, and then hiding or showing them depending on the menu item.)
Great insight! But I'm still leaning towards drupal...

No comments: