Why AWC Uses ExpressionEngine: Part 1
At allwebcafe, we are often asked to make recommendations for an, “out of the box” content management system. We have worked with many different CMSs over the years including WordPress, Drupal, SilverStripe, ExpressionEngine, some custom builds, and a few I can’t even remember anymore. All good CMSs embrace the same mission: to make it as easy as possible for an end user to add, edit and delete content on their website. While they all work towards the same goal, they all arrive there in different ways and ultimately forces the end user to choose which CMS they should use.
allwebcafe has decided on ExpressionEngine (EE) as our out of the box CMS of choice. This doesn’t mean that we don’t occasionally build a site with another CMS (when the conditions of the project warrant it) but for the most part, we use EE. There are a lot of factors that go into choosing a CMS and finding the right one for a particular project tends to be a balance of several web design and technical requirements as well as the needs of the stakeholders. With so many needs, it’s important that a CMS be flexible in its design and implementation. ExpressionEngine fulfills this flexibility exceptionally well.
ExpressionEngine is Extensible
EE begins by making little to no assumptions of what kind of site you are trying to build with it. This is the most significant design choice that Ellis Labs made when creating EE. When it comes to content, EE provides tools and a clean slate (rather than a template) and organizes content into “channels” that are implemented by the developer. When a channel is created in the system, it sets up two required fields (title and url-title) and leaves an otherwise clean slate for the developer. Because channels are set up to be built in this way, the content and content strategy drive the structure of the CMS. Channels allow us to extend EE to the meet the needs of the content as opposed to backing the content into a few predetermined elements. EE even allows users to extend the field type options. There are user contributed field types for everything from on-off switches to geolocation types that interface with google maps to find latitude and longitude.
EE was among the first CMSs to do this, but they aren’t the only one. With that said, it is the best implementation I have seen. Drupal’s most recent version (version 7) folded this feature into the native experience, but it is more natural to EE. EE keeps channels at the core of the system while Drupal still seems to view custom content as an additional feature.
Beyond channels, extensibility is a consistent consideration in regards to EE’s overall design.
ExpressionEngine Separates Content from Presentation
At allwebcafe we put a lot of stock in the visual aesthetic of our work. Applying and maintaining a site’s look and feel can be a real challenge when dealing with a CMS because the highly variable nature of the content. To overcome this challenge, we needed a CMS that had a templating system that would allow us to build a site using our code and techniques.
Some CMSs attempt to handle layout in the CMS back end interface itself. In theory, this can be useful when the end user doesn’t know HTML because the CMS is generating the layout code. Our experience, however, is that this feature gets in the way. Layout code can be difficult to locate, may require complex overrides, or in the worst cases requires a developer to hack the core code. EE was built to be a designer’s CMS. Its templating system works in a way that doesn’t interfere with our ability to use our own front end code.
(View of the EE admin for editing an individual post on the allwebcafe blog)
EE in general does a good job of separating content from layout. The templating system in EE is an independent system that interfaces with content as it needs to. In the same way that channels don’t assume what data your content holds, it also will not assume how the template needs to display it. The template system will decide what content it needs and how to display it. It is very rare within EE that a channel will output anything but the raw content elements. Since the developer has control over when HTML is mixed with the content on the back end, problems with layout code conflicting with content can be avoided.
This is different from other systems such as Drupal, Joomla, or WordPress where it is not uncommon for 3rd party modules to provide a block of pre-formatted content to the templates. In many cases the pre-formatted code will conflict with the template code and cause layout issues.
Following the theme of extensibility, third party plugins pick up where native template functionality ends. Combining plugins with native template functionality makes EE one of the better CMSs for getting the end result to look just a design comp.
Since we have so much to talk about when it comes to the advantages of ExpressionEngine, we couldn't fit it all into just one post. So keep your eye out for Part 2 in the next week or so. Until then, why not tell us what YOUR favorite CMS is in the comments below?