Working with Expression Engine

A few months ago I started playing around with a new (to me) web content management system called ExpressionEngine. Expression Engine is the primary product of Ellis Labs, who are also the people behind the Rails-like Code Igniter PHP web application framework.

The recently launched Soft Black Stars is based on Expression Engine, converted from the WordPress backend I started it with. I followed that up with converting the Synaesthetic Network and Six Twenty Three sites as well, all running from a single EE installation. It took a little work to get my head around the EE way of doing things, but I think I’ve mostly got it figured out now. Enough for my fairly basic needs at the moment, anyway.

The biggest stumbling block I encountered was EE’s templating system. Not so much the templates themselves, but how they’re used and how template groups affect the URLs of your content. Creating the templates was easy enough; apart from EE’s use of it’s own templating language instead of just using PHP it’s not much different from making WordPress themes. The problem is that EE URLs are rigidly structured and inseparably tied to the HTML template sets.

For example, if you want content on your site to live at then you need to create a template group called “articles” and use the index template within that group to display your content. This is my major problem with EE: that URLs must describe the site’s file structure rather than the content, which leads to a lot of non-semantic URLs. It’s not pretty. The commercial version of EE has something called Pages, identical in functionality to the WordPress feature with the same name, which can help to alleviate the problem in some cases.

Did I say “commercial” in that last line? Unfortunately, yes, Expression Engine is commercial software. There’s a stripped down version available for free, but to gain additional features you have to buy one of the commercial versions, which costs $100 or $250 depending on whether your site is personal or business related. I feel a little dirty stepping out of my usual world of free, open source web software, but I’ve heard that EE really is worth it for sites more complex than WordPress can handle (not that my aforementioned sites qualify as complex by any means, but they were a learning experience). Additional licenses must be purchased for the EE discussion forum module and the Multiple Site Manager, which provides a way to run multiple, distinct sites on a single copy of EE. Luckily there is an alternative, unsupported way of doing multiple sites without additional software, which is what I’m doing myself. The multi-site module is not worth the extra expense unless you need to run multiple commercial sites with separate user bases, this last separation being pretty much the only thing that MSM offers over and above the other method.

While I’m a bit less than thrilled with some of the EE design decisions and its commercial nature and restrictive licensing, I’m overall pretty happy with it. It’s a little clunky in some areas and could benefit from better support for use cases other than “building your site live on the public server” (yikes, but this can be worked around as well), but it’s a capable CMS and includes a lot of really nice functionality. Will I use it again? Possibly, but it all depends on the type of site I’m working on and my specific needs. It won’t be replacing WordPress as my default CMS of choice.


bjorn says:

nice writeup, I agree with your points; the EE template system does need an overhaul. Let’s hope 2.0 fixes a lot of stuff. heh.

Also, I’ve never understood why they insist on putting the templates in the db instead of files. Yes, maybe it’s faster. If you want speed, cache the templates in the db then. But make sure people edit the files.