There are countless articles and blogs comparing the most popular open source content management systems: Drupal, Wordpress, and Joomla. All three have strengths and weaknesses, but at this point in the game, most of the major flaws among them have been ironed out. What we’re left with is more of a personal preference when it comes to open source content management.
In this post, I would like to focus on a less prevalent but powerful and flexible content management system: ExpressionEngine (EE). EE was developed and released by EllisLab more than 10 years ago, and it is currently in version 2.5.5. EllisLab is also known for CodeIgniter, a lightweight and fast open source PHP framework for rapid development of web applications.
The general principle behind all of the content management systems mentioned so far is the same. You take pieces of content manageable by a non-developer, store it in a database, and deliver these pieces of content to the front end of your website. The difference lies in nomenclature, method, and flexibility.
Where EE wins in my experience is the flexibility a developer has with these pieces of content. EE’s main structure is built around Channels and Entries. Entries are the pieces of content, and Channels can be thought of as top level categories of Entries. Channels are assigned certain parameters and customizable fields, and all of the Entries in that Channel will share those assignments.
You can use Entries to populate anything you can dream up: calendars, slideshows, blogs, employee bios, JSON objects, products in an online store, and so forth. The best part of EE is how easily you can manipulate the entries to contain the fields you need. Field groups are assigned to Channels, and those fields then appear on the channel entries in the admin backend. Fields can be image attachments, text, dates, dropdowns, radio buttons, or even a relationship to another entry. There are also EE plugins to allow additional more complex channel fields.

When you have your Channels, Fields, and Entries setup, you’re ready to display your entries on the front end. The most basic way of doing this is by adding EE tags to loop through your entries like so:

The above code snippet would loop through the most recent 10 Entries in the Blog Channel, and display the content of the two Fields {title} and {body} for each entry. Where would you place this code you may ask? That brings us into Templates.
Templates in EE are similar to templates in Wordpress and Joomla when using the K2 extension. You have a specified markup and structure for the unique pages of your website, and dynamic content from the database appears around that structure. The big difference in EE is that you will have a template for each page of your website unless you’re using an extension to change this default behavior. Within your EE template, you can place all of your html markup, dynamic EE tags for your Entries, and calls to other snippets of code that are universally used like {header} and {footer} for example.
It takes some getting used to, but digging into ExpressionEngine can be a very rewarding experience for any developer who has thrown his mouse across the room trying to get a less flexible CMS to play nice. Interested in getting your very own website powered by ExpressionEngine? Hit us up.