Architecture for Joomla — Part One: The Parts

Having invited a few people to play around with a test server and default version of Joomla, I figured I could start sharing what I know about this Content Management System (CMS) and how I think you should approach a website architecture with the knowledge that you are moving from a static website to a CMS.

The first thing you should know about CMS is that it is designed to divide tasks into pieces so that people with different skills can handle the most relevant aspects of the website. Designers can manage the look of the site without interfering with content. Coders can add functionality without mucking up the design. And the architect or user-experience folks can deal with navigation issues with only limited impacts on the content, design and functionality of the site.

The benefits of dividing up tasks are fairly obvious, but for the architect, it makes coming up with a site design a bit more complicated. For instance, if the content is going to be added collaboratively, how can you create a vision for the site and then explain this vision to your managers? Well, this is a stab at doing this, by working with the Joomla CMS.

Joomla Architecture

By all means, this is not to say that a CMS should dictate for you what the site design should be. Still, if you are settled in a static page mindset, you may very well benefit by understanding what Joomla is trying to do before creating your design document. The parts of Joomla are the same parts of any website (content, navigation, functionality, colour/design scheme), but the nomenclature is different as are some of the choices in each section. Also, Joomla gives you the ability to establish Global settings for content.

Oh yeah, I should also add that this applies only to the current (as of today) stable release 1.0.12 only. A couple of things may be changed in the 1.5 version.

  • The Global Settings

As you would expect, the global settings involve full-site changes on everything from content to the database for the website.
Who should handle: probably a web architect or systems person, with input from designers.

Why this is useful: Global settings set the default for most content and functions. You can always deviate, but it’s nice to have a fairly consistent approach.

Basic examples:

  1. Do you have a front-end login or not?
  2. Does content offer an option to print or email to a friend? Is the button an icon or text?
  3. What is the length of your average list of items on the site?
  4. What timezone does the website use?
  5. Do you allow user ratings?
  6. What are the database settings?
  7. What are the global metadata for the site?
  8. Do you allow a mass mailer?
  • Content

In Joomla, all content is handled by a MySQL database and divided into sections, categories and content items. The important thing to remember here is that sections, categories and content items have almost nothing to do with the navigation of the site. They are just bits of content in a database that you can later refer to when you develop menus.
Who should handle? This can vary depending on your situation. In general, you can let anyone add content items, but probably should have an architect and or communications team handle sections and categories.

Why this is useful? Content is what differentiates your site from others. Having many people add content to the site without having to deal [too much] with formats, fonts, colors, placement and etc. is one of the reasons you probably got into CMS-based design in the first place.

Explain this process further, please:

Sections are the uppermost bit in the taxonomy. They have a description and, if you choose, can list the categories that are contained within. You can also choose a directory that stores images related to this content.

Categories are next in line. To make a category, you have to choose a section for it to live in. Categories also have a box for a description. You can also choose an image directory for your category as well.

Content Items are where you finally add content. All content has a section and a category to live in. Here is some more choices you have to make with content items:

  1. What is the title of your entry?
  2. What is the intro text & what is the main (“read more”) text? The latter is optional.
  3. Whether the item is “published” or just stored in the database for later.
  4. When the item gets published and when it gets taken down.
  5. Who is the author of the item.
  6. Does this go on the front page as a feature?
  7. What images are applied to this page? Is there a caption? Alternate text (for screen readers)?
  8. Does the item show the category and/or section to which it belongs?
  9. Does this page have unique settings or just use the global ones?
  10. What metadata do you want to apply to the page?
  11. Does this item have a menu link? Where?

Ok. How about one example?

Ok. Section = “About the Library” Category = “People” Content Item = “About Our CEO,” with a picture of the CEO on the upper-left-hand side and a caption. It has a brief profile in the intro text and a longer CV/Bio in the main text. There is an option to print that uses a print icon, and uses global settings. It is not linked up to any main menus (but is linked to on the About the Library page.

  • Navigation

Navigation in Joomla is handled through modules. The most popular module is the menu (which is really a nav bar). The menus seem fairly simple at first, but actually they have a lot of say in how your content is displayed.

Who should handle? Your web architect, and perhaps some of your design folks.

Why this is useful? As content gets added to your site, you are going to need a way (even many ways) to make sure people can access it.

Explain this further please?

Essentially, a module is a block of content that can be moved around the website and applied to different pages. There is a module that shows random pictures, a module that lets people change the template (the look) for the site, a module that shows the most popular content items on the site, or most recent, or related items (based on metadata).

A menu is a kind of module that does navigation. In a menu, you set the labels for your navigation and where each label takes your user when it gets clicked. Your menu can be verticle or horizonal, straight or faceted.

There are also a wide range of modules created for Joomla by various developers.

For a menu, you need to set a number of things.

  1. What are the labels for the menu and what is the order?
  2. To what content, category or section does the menu item link?
  3. Does the menu item show the content as a list, table or blog?
  4. If it is a blog, how many columns across? What size?
  5. Does the menu item show an image?
  6. If there is a list, is it searchable? Will you enable filters?
  7. Where does the menu show (top, bottom, left, right) and in what pages does it show (all of them or just some?)?
  • Templates

The template is probably the hardest part of the website, because it requires some coding. Fortunately, you can probably use a product like dreamweaver to create the template and then put the bits of php code (the ones that say “load the front page content here” for instance) afterward.

Who should handle? You design team with help from a coder.

Why this is useful? Having a standard look and feel will set the experience for your user. It’s also cool to jump from template to template just to show how drastically you can change the site without ever changing the content.

How does it work? Basically, you have a CSS file that handles all of the colors, alignments, and fonts. Then you have an html file that establishes where your content goes by default. Within that html file are a number of scripts that basically load content such as images, menus, manners and the like. There’s not that much to it actually. Well, that’s a lie. Your template will decide things like:

  1. What color is your body text? What font? What point-size?
  2. What is the predominant background color? Does it use an image? Which one?
  3. Where do your menus go by default? What colors do they use? Do the settings change once they are visited or when someone puts the mouse pointer over them?
  4. How are links differentiated from regular text?
  5. etc.
  • Functionality

Joomla helps to add some functional capabilities through “Mambots” and “components”. It’s really hard to differentiate between these two items though, other than through the sorts of things they provide. Essentially, both of these things offer the sorts of wonders a bit of code can offer.

Who should handle? Adding a component or Mambot that is pre-done is easy enough for an architect, although you do have to consider long-term support for the product. Scripting your own Mambot or component is advanced and probably should be handled by a techie.

What is it useful? Uh, can you say “search bar?”

Some examples:

  1. There are a variety of search Mambots that will search specific categories for instance.
  2. There is an email cloaker that helps prevent webpage-based spam.
  3. Mass mailing is available through a component.
  4. There are advanced WYSIWYG editors available as components for Joomla.
  5. How about a chess club? Yup. There’s a component available for this (though I’ve never tried it myself).
  6. RSS feeds are available as components (you also need an RSS feed module as well).
  7. Polling mechanisms. etc.

So this is a basic explanation of the main parts of Joomla that are relevant to a Website Architect. While you always should think of an architecture project from the point of view of the user, it helps to know some of the functional benefits, limits and constraints that get applied when you use a content management system.

My experience, however, is that Joomla is flexible enough to handle just about any design or architecture. If anything, the main problem is that Joomla gives you too many options and approaches to specific problems.

Part Two will look at how one should approach content in Joomla.

13 thoughts on “Architecture for Joomla — Part One: The Parts

  1. Hi

    thanks for afford you have used for this article. Please continue in this way. And let me know if there is new article about JOOMLA.

    Very good job

    Milan

    Like

  2. Huge thanks for the time in one this one Ryan. As you know from my CMS tweets, I though Joomla would benefit my non-coding ability but get me more functionality than WordPress.
    I just needed to learn how to “think” in Joomla. This helps.

    Like

  3. ! Nice site
    Keep posting, and mate thanks.
    there is nothing in the world I enjoy more than learning joomla. In fact, i’d rather be learning joomla now!

    Like

Leave a comment