Over the last few months, I’ve been working on a rather large project in Expression Engine. This is a reflection on some of the lessons learned from that experience.
First of all, Expression Engine is meant to be a full fledged content management system and platform for custom functionality. It allows creation of custom fields, and robust templating on the front end.
As with many CMS’s, there’s a steep learning curve for the programmers. This included figuring out the best way to architect the use of templates, snippets, plugins, extensions, etc. in a way that makes sense. Figuring this out while learning EE was very difficult. The parse order for templates was maddening to learn, along with all the nuances of the built in tags. Due to the dynamic nature of the site, relatively little caching was used, so each page is pretty heavy with mysql queries. Because EE has complex permissions, each template generates many database queries to figure out the final rendering.
In addition, most EE settings, including templates are stored by default in the database. So it’s hard to track changes to the site using traditional methods (git or another version control system). It also meant most editing was done in the Web GUI, rather than my preferred editor.
Another drawback is that database tables are all intermixed – so as a “channel” is added with custom fields, the channel data and fields are all mixed in with other channel data. So, for example, you can’t pick out the “news” table of the database if some data needs to be imported or restored.
Expression Engine has a lot of plugins / extensions, but many are paid. In our case, we spent maybe $100 on plugins to get the functionality we needed, but also programmed some custom add-ons that we needed. EE also has a fee for the license if used on a commercial site, so that was a fee as well.
Overall, I see that EE can be a pretty useful CMS. For this particular project, the functionality was perhaps a bit too dynamic and heavy for EE, though in the end we did make it work. It did save us a lot of time by not having to build the admin backend. For most sites, I expect EE would work fairly well, and I plan to use it again when appropriate.
Category: Programming Comments Off on Expression Engine Followup