In my previous article I talked briefly about MODx, a relatively new CMS, which I’ve been test driving for the last few months. Now I’ve had the time to use it in anger, I thought I’d review it properly now for anyone interested in this promising content management framework.

Download and Installation
First port of call will probably be the MODx website. Personally, I don’t think the website does a good job of representing the product, not because of the way it looks, but because of the rather glib attempts at humour and language which give a first impression that the whole thing is a bit of an inside, techy joke.
“MODx is 100% buzzword compliant….It empowers its users to build engaging “Web 2.0” sites today”
Fine if you’re a geek, and get it’s not meant to be totally serious, but not exactly the first impression I’d want for people seriously evaluating my CMS.
From the downloads page you’ll probably notice the version of MODx (currently 0.9.5). The fact that it’s not even hit RC 1 will clearly be a deterrent for some people, and it does have some pretty big downsides that I’ll come to later, but if you’re feeling adventurous then go for it.
Installing MODx is a breeze. Like so many open source CMS, it’s a PHP based app that interfaces with MySQL. Have your database set up, upload the application files and run set up. It should be as simple as that, and in my experience, it was.
Updating is pretty simple too, although it essentially involves re-installing the application, and I’d much prefer a system like Textpattern where you literally just click “Update” at the bottom of the admin interface and it goes off and does it for you automatically. Maybe something for the future.
The building blocks
As I eluded to in a previous article, CMS are all about horses for courses. I’ve used blog engines to create “static sites”, but it always feels like you’re hacking it. MODx is the complete opposite. Creating a static website is a breeze, thanks to the simple templating system. Creating a blog is possible, but it’s a lot less intuitive and it involves a bit more work using Snippets, which I’ll come to later. Like I say, horses for courses.
Overall though, you’ve got a lot of flexibility and power, and this is largely down to the building blocks and how they ineract.
Templating
I know a lot of people who’ve found getting to grips with Textpattern initially difficult due to confusion over Sections, Pages and Forms. Not so with MODx, the language and templating is very intuitive and is without doubt one the systems biggest strengths.
It touts itself as a CMS that
”...makes child’s play of building content managed sites with validating, accessible CSS layouts”
And this is completely true in as much as it’s true for any static HTML/CSS site that you might build.
A standard method for creating a MODx content managed site, would be to design traditional HTML/CSS templates, upload them into the template system, and replace the “content bits” with MODx tags that call content, images or documents.
The following example shows a standard method for dropping page content into a page:
<div id="main">
<h1>[*pagetitle*]</h1>
[*content*]
</div> If you’re familiar with other CMS like Textpattern you’ve probably come across this concept of proprietary “tags” placed inside standard HTML templates. It’s such a simple system, and allows for such flexible layouts, that it makes me wonder why any CMS would try something different. I shudder to think about the hoops you have to jump through to customise your site in other content management systems.
Put it this way, if you had completed HTML/CSS templates you could build a 10 page, fully managed, static site in about 5 minutes with MODx. Pretty nifty huh?
Building blocks
The content tags above are an example of one of the building blocks in MODx, know as template variables. Template variables are often just page content but it could also be an image, file or even a database query displaying data on a page. Coupling this with a system that lets you drop them into content templates and instantly you’ve got a flexible framework to customise the CMS almost limitlessly. It also means you can lock down which areas are editable, so careless users don’t screw up your lovely design.
Template variables aren’t the only building block though. You’ve got Chunks, which are essentially reusable blocks of code for things like a footer or banner, and Snippets which are dynamic code designed to extend the functionality of the system.
Snippets are potentially one of the most useful tools for designers as they allow you access to possibly complex functionality that would normally require some programming knowledge. MODx comes out of the box with a bunch of Snippets pre installed or you can download new ones from the Resources Repository on the MODx site. The Ditto snippet is what you’ll need if you want to use MODx as a blog for exmple. If you’ve got PHP skills you can even dive right in and start writing your own.
It’s the attention to detail here that constantly impressed me here.
Take the WayFinder snippet for example, a handy function which creates a dynamic menu based on your site pages. Create a new page and your nav bar automatically updates, even supporting multiple levels of navigation. Obviously a useful function but take a look at the code it produces
<ul>
<li class="active"><a href="/index/">Home</a></li>
<li><a href="/about/">About</a></li>
<li class="last"><a href="/contact/">Contact</a></li>
</ul>First off, it’s nice a semantic list, but check out the <li class="last"> ! Now you might not think that’s a big deal, but how many times do you have to specify a class="last" on a list item. Having a CMS with this level of attention to detail is a breath of fresh air. This is stuff clearly created by web developers who actually do this stuff day in day out.
The user interface
Again, MODx performs very well in this department. Although a bit slow, the UI is well designed and easy to navigate. Adding content is done by means of a Rich Text Editor and that has all the usual dodgy mark up problems associated with it, but you can choose from a couple of different RTEs or remove it altogether. It’s a difficult dilemma to tackle, and one with no perfect solution, but clients will always want a simple means of adding and styling content.

You can also manage resource and upload files and images which can then be called from within the main editor. The manager even gives you some basic web stats so clients can easily measure traffic.
All in all, it’s pretty client friendly and I haven’t had many problems with them breaking it so far.
Beyond the CMS
MODx does a great job as a full featured CMS, but it’s true potential lies in it’s ability as a application framework. I’ll hold my hand up and admit this is the aspect of MODx that I know least about, but developers can effectively create new applications which run within the MODx interface, and use a flexible API and event model which allow for the system to be expanding in any direction.
In a recent project, our developer had to significantly extend the functionality of the system, in a way that would have been impossible with normal a CMS. In other systems, this functionality would have been separated from the content management, but in MODx everything can be built and managed from the single interface.
I can’t really rate this against other frameworks like Rails, Django or CakePHP, but it worked pretty well for us, although you can expect the teething problems associated with learning any new framework.
Designer and developer working in harmony
In an ideal world, designers and developer should be able to concentrate on what they do best without straying into the others territory. In this respect I found MODx did an admiral job.
Designers are able to create complex, fully content managed sites, whereas developers can concentrate on creating the business logic for the site with snippets and modules, without interfering with the front end. Snippets are abstracted in the MODx interface and can easily be dropped into the necessary site sections. Implementing back-end functionality is so easy that designers can do it, leaving them to make the judgement about how page layout and design should work.
It is this balance between content management system and application framework that is undoubtedly MODx’s USP.
Enough praise, what’s not so good
Interface woes
To be completely honest, MODx is a very promising CMS/framework but it does have its problems, almost all of them related to the immaturity of the product admittedly.
The user interface uses Javascript and AJAX heavily, which allows you to do some pretty cool things like edit pages as you browse with a feature called QuickEdit. This is all very fine and well, but it has the side effect of really slowing down navigation around the management interface. I’m used to zipping about Textpattern adding/editing/deleting at a blistering pace, but the MODx interface is really slow, and using it for any length of time can be frustrating. My recommendation would be to cut back on much of the unnecessary AJAX gimmickry within the manager.
In the version I used, it was also quite buggy. I had to save the same article multiple times before a certain template variable would be saved the way I wanted. There was no apparent reason to this, it just seemed very temperamental. I’m sure these are issues related to the version of the CMS and they’ve probably even been fixed in the latest releases.
Documentation
There’s no nice way of saying this but the documentation for MODx truly sucks. The website gives you the absolute minimum information you need and there’s an even more sparsely populated wiki.
Most people seem to use the forums, and the online community seems very nice and supportive, but they’re a small bunch and seem primarily focused on improving features and pushing development forward rather than documenting what already exists.
Who is it for
If you’re looking for a well documented and supported CMS then MODx probably isn’t for you yet.
If you’re a designer who wants a CMS a step above blogging engines like Wordpress or Textpattern then MODx is certainly worth a look. If you’re involved with larger projects with more complex CMS requirements then MODx has all the flexibility you’ll need.
If you’re a developer looking for a promising PHP application framework, then MODx might be for you too.
If you a small team with both designers and developers looking for a coherent way to build complex, scalable and feature rich sites and then you should definitely check out MODx. The separation of business logic and presentation creates a harmonious relationship between design and back-end, with both parties able to focus on what they do best.
I’m very interested in MODx, I hope the development can keep pushing forward as it could be a real contender in the near future. I’d also hope the developers don’t forget about all the designers out there too, and start putting more effort into documenting the system, as it’s a bit of a barrier for adoption as it stands.
If anyone else has had experience of using MODx, whether your a designer or a developer, I’d love to hear your experiences.

Elliott - 13 January 2007
Couldn’t have said it better myself. Not knowing much about PHP or mySQL when I started with MODx, I did find some issues with the lack of documentation for the CMS, however, the support through the forums was amazing. Considering this has only been in development for a few years, I think it has come along way, but I do agree that it has more to go.
Definately worth a look if you know some CMS or PHP/mySQL and need a flexible CMS!