Why ExpressionEngine Should Be Your Next CMS
May 22, 2008
Update: Learn how to build a website in ExpressionEngine with the ExpressionEngine screencasts.
The CMS wars are like the programming language wars: everyone takes sides and flames until your boss walks in and catches you surfing the listservs instead of doing your job.
Many articles have been written that compare different CMS solutions side-by-side. The Ultimate CMS Showdown. I could redo that all right here but I won’t. Instead here is a list on why ExpressionEngine is a great CMS and much, much better than those other popular tools like WordPress or Movable Type:
- Acts like a CMS, not a blogging tool - But it can be either. Flexible! Aren’t you tired of trying to jam a website into a blogging tool? Not fun for you and hard to manage.
- Excellent security track record - And they offer a dozen other security features like IP Banning, Email banning and Throttling.
- Custom Form Fields - Like, really customizable, not “a coder designed this functionality” customizable.
- Built-in Caching and Optimization -
Can you believe WordPress still doesn’t have this?[See comments] EE has a much EE allows you to cache individual templates, queries and optimize your site down to to the EE tag level. - Commercial Software - I know you want everything to be free, but charging for the software keeps warm bodies in front of hot computers fixing bugs and adding features. Also, it’s in the best interest of the company to make great software and treat their customers well (read: not snark at newbie questions like some other places you might have visited). If you don’t want to pay, there is a free version (EE Core) that is feature-limited.
- Easily Extensible (and getting easier) - If you’re knowledgeable in PHP you can fairly easily jump in and extend ExpressionEngine through Extensions, Plugins and Modules. In the new version of EE all add-ons will be written using the PHP framework CodeIgniter. For anyone that has written add-ons using the current API, using CodeIgniter will be a welcome change!
- Solid Documentation - Because it’s commercial software, real resources are dedicated to writing quality documentation for ExpressionEngine. In addition, there’s a very active forum with a small staff of technical support staff employed by Ellis Lab and a wiki that contains useful ExpressionEngine tips and tricks.
- Easy to deploy - It’s PHP and MySQL! Throw it up on the server and go! Use the Server Wizard to test your server’s support for EE and the install wizard to install ExpressionEngine.
- Customizable Control Panel (and getting even better) - Add tabs, remove tabs, add links, write an extension that completely changes functionality. And then you can theme it however you’d like. Tailor the control panel to the project or client. The best part is that in the new version of EE coming sometime this summer, all of that customization is supposed to be even easier.
- Great for client work - I’ve helped build more than two dozen ExpressionEngine sites, all but two were for clients.
- Official Add-On Approval Process - Anyone can build and distribute EE add-ons but there is an official channel of add-ons that you know are safe to run. There are also many prolific add-on creators, like Mark Huot, who consistently release useful extensions, plugins and modules.
- The Pro Network - A list of web professionals proficient in ExpressionEngine. Some are designers, some are developers, some are both.



Excellent list - I was trying to come up with one myself (I use, and love EE on my own site), but you seem to have done better here.
Thanks for the list. I’ve been trying to find a project to test out EE, but have yet to find one where I can’t use Textpattern. Textpattern is just so non-threatening...I just wouldn’t even know where to start with EE.
Shane, it’s funny you mention that because Textpattern scares me. :)
Shane - I like Textpattern a lot. I agree, especially for a blogger, Textpattern is really non-threatening.
That said, EE was a welcome change for me when I started building bigger sites. It’s very client friendly in it’s flexibility. The custom form fields and extensibility have made it so perfect for so many different sites I’ve had the opportunity to build.
Great list Ryan. Another one of those posts I keep meaning to write (but am too busy building EE sites).
Great post Ryan. I love EE, and this is a great list. I’ll be pointing people here when they ask me why I always use ExpressionEngine.
Shane - I used Textpattern way back when Dean was still running it. It always felt clunky, and it still does.
Nailed it. Well said, concise and accurate.
I’ll put in my two cents worth for Textpattern as well. It occupies a nice middle-ground between power, flexibility and ease-of-use. If you can code XHTML and CSS, Textpattern is easy to master once you’ve got the ball rolling. It’s admittedly daunting initially for anyone not used to using a CMS, but it gets better and better as you harness its capabilities. Plus there’s a book that was just released that’s a great reference.
I’ve reconsidered EE from time to time, but the free version seems limited and the pay version seems a but pricey.
Great article. I’ve been using EE for both personal and professional projects for about a year and a half now, and I’m continually impressed at EE’s power and flexibility. Add to that a vibrant users’ community, and a very open and helpful development staff, and I’ve never looked back since making the jump to EE.
yeah EE is ok for the most part. I’ve used it on alot of projects because for real customization it beats wordpress. I don’t care much for the regular expression templates, and have had to do some silly workarounds just because I can’t store temporary variables at all. Once you have to start using multiple exp:weblog tags things start to slow down pretty quickly, and there are some workarounds for that, but some of the things I have had to implement have been template breakers.
Just wish the template language was their RegEx templates OR php. I think templating for me personally would be so much faster if they had a Data API, that you could either grab via bare php or was extracted out to use via their template system. Eval is not generally the best way to solve a problem, and it also hides alot of errors.
It is more secure, which is nice. I wish that there was a way to specify validation types on custom form fields (there are some plugins out there, they’re ok for the most part).
The thing that kills me is when I enabled sql debugging and it shows me the 60+ queries to show just one page, not to mention how slow the admin section can be. I assume that when they move to code ignitor as a base that they will be able to better optimize the admin section.
And since they will be using code ignitor, wouldn’t it be just as easy to use the templates as views and pure php?
And compared to wordpress, the EE forums are MUCH more helpful.
Uh, your smiley is borked. It should be here:
http://ryanirelan.com/images/smileys/smile.gif
The thing that kills me is when I enabled sql debugging and it shows me the 60+ queries to show just one page, not to mention how slow the admin section can be. I assume that when they move to code ignitor as a base that they will be able to better optimize the admin section.
Kenrick, did you try optimizing by disabling data at the tag level? It can be a pain, but it really helps save the extra queries.
Thanks, Luke. All fixed now.
I don’t meant to detract from EE (it’s in fact a good solution for many problems), but please don’t unfairly bash Wordpress. WP has had caching built in since 2005 (http://www.problogger.net/archives/2005/12/26/10-things-you-should-know-about-wordpress-20/ #4). In addition there’s full page-caching plugins such as WP-Cache. In the same way that EE relies on modules to add needed functionality, WP relies on plugins.
You may have a bad taste in your mouth, but no need to bash great software over and over again when you’re trying to promote something different.
oh yeah most of my tags have all the extras off, this is what a typical exp:weblog tag looks like:
{exp:weblog:entries weblog="podcast" rdf="off" limit="10" orderby="title" sort="desc" disable="categories|member_data|pagination|trackbacks"}
of course that particular tag is not generating those 60 sql queries, and I did have to find out the hard way a couple of times what to turn off/on (like why isnt rdf="off" default???). If you want I could try and find the one page that did generate a ton of sql queries. it was back in a 1.5.0+ site, and i think i was using the mark hout pages add on (which was a total sql whore by itself), but apart from that module it was still many queries to just grab one piece of content from the db.
here is the caveat though, is that it might be printing out the SQL, but it might be cached, it doesn’t say if it is retrieving from a cache or not. But it was still slow enough for me to think it wasn’t being cached.
only reason i’m picky is that i have done alot of php/mysql development including making alot of custom CMS systems, and when looking under the hood of EE there are alot of things that could be faster/optimized.
that being said though, i no longer look to make custom CMS systems as EE is ok for up to medium size clients. I have not had the opportunity to use EE on a larger site yet, and I think it will probably be ok, but there will be alot of caching going on.
I inherited my license of EE from my employer and I use it for my personal site. It is an incredibly robust tool. It’s not for everyone, but it works for me.
And the forums on the EllisLabs site are very helpful as well.
WP has had caching built in since 2005
Don’t you have to add a line to your wp-config file to enable this? And it’s only query caching, right? Not template caching.
In the same way that EE relies on modules to add needed functionality, WP relies on plugins.
Well, EE itself is just a series of modules, but the core modules are built by Ellis Lab and include the most basic functionality for a serious CMS.
BTW Kyle, I mentioned WP twice. :) Not quite “over and over again.”
Ryan: Three times, but who’s counting :) No, you have to *disable* it to make it not work. And yes, it’s just query caching—but as referenced, WP-Cache can easily add page-caching with all of two clicks.
My point was more that there’s no need to bash great software and it’s community because some people try to shove squre pegs in round holes (Wordpress is indeed a blogging tool with CMS features, whereas EE is a CMS tool with blogging features) or because you had one or two rough times.
I’ve reconsidered EE from time to time, but the free version seems limited and the pay version seems a but pricey.
The free version does have its limits - that’s true. As it is it’s pretty dang powerful, at least as much as textpattern out of the box. The license does say you need to only use it for non-commercial purposes though.
I don’t think the pay version is pricey at all though. I’ve said this plenty of times: Ask yourself this – do you really want to work for a client who can’t afford $250?
@Kyle - I don’t think he was bashing the Wordpress community because WP is a blogging app, instead of a CMS app. I think he wash bashing the WP support forums because they “snark at newbie questions”.
Good news that caching is available for WP though.
Kyle, I updated the article to point to your comment about WP query caching.
Oh and I was only counting mentions of “WordPress” (using Safari search because I’m lazy) and didn’t catch my link over the WP forums. Good catch.
I’m not bashing the WP community at all. This site ran on WordPress for 4-5 years. However, I can totally see my comparison of EE to WP or MT as being unfair because they’re possibly not in the same class of software.
i dont think template caching is as useful for WordPress as it is for a system like EE where its templates are just regex’d matched eval’d strings.
If the host/server has an opcode cache, those template files will be compiled and be served up pretty quickly for wordpress, while retaining the dynamic qualities of it being php.
EE templates don’t really benefit as much from an opcode cache, as they have to be eval’d from the database everytime, and depending on where they are cached - post query - post eval will determine just how useful that caching is.
personally i would choose the opcode cache path over a database stored eval’d template
Why I nearly switched to EE, but then decided to stay with Textpattern for a bit longer: http://www.mattrobin.com/article/57/expression-engine-move-on-hold
Also - its NOT easy to install on Dreamhost. All of that aside - it is a great CMS. If you just want to do blogging, then WP has a better interface IMO and easier to get along with, but if you want something better and more robust then EE is a brilliant choice. It has to be the commercial version though, as ‘core’ is far too limited.
I’ve been rolling my own PHP/MySQL stuff for about 6 years and recently discovered EE so I’ve been trying to transition to it as my first CMS.
Likes
- easy install
- friendly folks on the forums
- well-written and thoughtful documentation
- good support for web standards and relatively clean code
Dislikes
- lack of easy customization for admin publishing/editing (this is a huge limitation for me; I like to make the backends very simple to use and clean looking; if only EE and Wordpress had a secret love child)
- paths are confusing
- URLs aren’t friendly out of the box
- the mysql table structure for custom fields seems to cause speed issues, but I’m not familiar with speeding up queries in EE yet
- unanswered forum posts can make the journey feel a little lonely
If version 2 manages to handle admin customization with ease then I’ll fully switch, but right now I still find rolling my own custom backend and database structure to be less painful than learning how to get something similar done in EE. Once version 2 comes out I’ll at least use code ignitor to write custom pages instead of rolling my own.
I’d sure like to see some behind-the-scenes videos and web posts about how other people are solving problems using EE. I’m sure we’re all solving the same kinds of problems but there isn’t enough editorialized information about the solutions. Forum posts are too hidden and buried, the showcase is a little too lite and the behind the curtain series was a great idea but seems to have lost some momentum.
@Brian Warren
I’ve decided to try out the core version of EE and may choose to add it as a second CMS under my development belt if it works out. On the surface it seems to have a similar workflow to TXP.
And yes, if it does turn out to be really good for my needs, I’m sure it will eventually pay for itself after using it for my clients. It’s just sticker shock on my part following my satisfaction with TXP which is free.
Watch out for the promised enterprise version of Textpattern dubbed Pro. Maybe it will turn out to be a formidable player down the road.
Dave, that’s a good list of like/dislikes. Thanks for adding that.
@Ryan – Thanks for the write up.
There are some very honest assessments of EE in the comments here and I can assure you that everyone at EllisLab takes an active interest in how our products and services are viewed.
EE 1.6.0 was released less than a year ago and we’ve already made public some of what we’re building into EE 2.0 (to be released this year). We recognize that a significant number of our users are professional web developers with demanding projects (and clients) and are making every effort to create and support products and services that make your job more fun and more profitable.
To survive the CMS/Blog software cold-war, I would encourage you to keep up-to-date with EE and at least one other web-publishing platform for two reasons: you’ll begin to see a definite contrast between EE and the other solution, and when EE is the right tool for the job, you’ll use it with much more confidence and appreciation for all the things it does really well.
A wise old man once said to me “Don’t blame the guy who made the shovel if the shovel is no good for chopping wood”. I believe that EE is the absolute best in the market at what it does, and I think anyone who builds a few sites with it will quickly understand what it can do for their clients and their business. There may be a time though when some other software is a better fit for a client’s project, and if so, use it. The rest of the time, use EE.
Good write up. My company switched over to EE for most of our projects over a year ago and I can’t imagine developing without it right now. There are some things that aren’t perfect as mentioned above, but nothing is going to be 100%.
I was a huge textpattern fan before using EE, but it really isn’t as powerful or flexible when it comes down to developing sites for clients. It’s a great tool, but I hit too many walls and the custom fields EE offers alone warrant the switch.
Thanks for info, Kurt. I agree. :)
Travis, my experience has been the same as yours. EE is so very perfect for client projects where a custom CMS is not needed. The flexibility of custom fields is a huge advantage in keeping the Client’s user experience as great as possible.
Oh, BTW, when are you going to create an Airbag series of Happy Webbies? ;)
You guys have to fight Jeff Croft for next up. I’m afraid for our well-being and the possibility of mail bombs if he doesn’t get his way hahaha.
Before you shell out for EE, you might want to try Drupal (which is free and open source, BTW). Drupal is used by companies like Nike, The Onion, Sun, IBM, Adobe, Yahoo, Novell… the list goes on. Obviously all these companies could afford EE, but go for Drupal anyway. Food for thought.
drupal is great until you want to make a site that is not a drupal type site with blocks and a bunch of sidebars.
but hey, when drupal is appropriate, use it ;)
> lack of easy customization for admin publishing/editing (this is a huge limitation for me
Agreed. Out of the box CMS admin design is too cluttered and causes unnecessary anxiety to non-tech users.
@kenrick:
Do you mean pages just like these:
http://myplay.com/
http://www.mtv.co.uk/
http://www.popsci.com/
Or dozens of other high profile websites which are using Drupal?
I can only agree with John and suggest Drupal to any Webdeveloper out there. It’s simply the way to go. Just look at the _huge_ community supporting it. And the development is getting faster and faster.
And for all those fancy Designers that support EE because of it’s looks (and maybe it’s simpler to theme a EE website than Drupal?): Expect some really great changes for Drupal 7 which will make your life much easier.
I agree that custom fields are immensely important if you’re setting up a site that will be handed over to a client to add content. Textpattern out of the box is limited to ten custom fields, which may be sufficient for a lot of folks. But if you want robust custom fields for TXP, there is the excellent plug-in from Gerhard Lazu which allows for customizable text fields, text areas, drops downs, radio buttons and checkboxes. It is twenty bucks, but you get support and upgrades for life.
EE comes with these capabilities in the core version, which is nice, but I still think Textpattern can let you do what you want and how you want for just about everything you want in a full-fledged CMS.
For those interested, a series of EE Screencasts launched today:
http://www.ryanirelan.com/blog/entry/learn-expressionengine-with-the-ee-screencast-series/
Hate to beat a dead horse, but I’m surprised to find that the current core version of EE has no file management. That’s a glaring omission. TXP already has a pretty nice file management system that lists the inventory of images and files uploaded to the database and can be repurposed for templates, forms and content. Plus there’s a handy ‘wizard’ that lets contributors easily create the tags that place content in posts with just a click, cut and paste.
Yes, version 2.0 of EE will finally get a file manager and it seems pretty good from the previews, but I thought file managers were standard in most CMSes. To my surprise, I guess not.
Gary, you’re right, it’s a huge hole in the current version of EE and has caused some difficulty with a few of the site I’ve help develop. There is some file mgmt but it’s not easily accessible or ideally designed for real use.
I’m just glad they’re building it for 2.0.
You still need the paid version to utilize it, but this extension is a killer addition to the native file functionality http://docs.markhuot.com/ee/extensions/file Mark’s EE add-ons are *CRUCIAL*. Yes, I said crucial. Cue hair band!
This one helps bridge the gap a little bit for Textpattern file management fans although his site seems to be down right now - bookmark for later! http://loweblog.com/freelance/article/ee-file-manager-module/
Gerhard Lazu’s custom field plugin for Textpattern is excellent, but the problem really is that custom fields are decidedly second-class citizens in the Textpattern admin interface. You can’t promote them to prominence on the main writing screen without a plugin, and even then, they’re off to the side.
I’m liking the EE approach of allowing the developer to create a good writing workflow directly on the admin screen.
I agree with many of the pluses you’ve listed. I think EE occupies a fairly small niche between the larger CMS applications and the primarily blogging engines. It shares it with Textpattern, Drupal, ModX and perhaps a couple of others.
I had been doing my own custom site coding but got lazy a few years ago and decided to try out some of the blog engines and smaller CMSs for my own sites (and maybe a client or two if they were the appropriate tool).
I started with Movable Type, which I liked mostly because it could generate a static site - the process of generation of which became one of things I came to dislike about MT. I then tried Wordpress and while I generally liked it, it always felt awkward to me and I wasn’t enthused about some of the apparent coding quality (sorry guys)though I understand this has improved.
That led me to EE and Textpattern. I really liked EE but found the admin interface a bit intimidating, and the price a bit more than I wanted to pay for my own hobby sites, yet found a couple of things I wanted missing from core. So I went with Textpattern. It may take a bit more work from time to time, but it is very flexible.
Would I give EE another try sometime? Definitely - it’s an impressive package, and for commerical sites quite good. But for now I’ll stick to Textpattern.
To paraphrase Winston Churchill, EE is the worst CMS out there, except for everything else.
@Nick Caldwell
Admittedly, the Lazu plug-in doesn’t provide for the most elegant of interfaces for custom fields in the Write tab, but I use it for a client who uploads PDFs and mp3s for upload and inline play and it works solidly with very little fuss. And he’s far from technically inclined.
I am still impressed at how my clients make requests for what they’d like to see in terms of functionality in their site and TXP seems to be able adapt to every challenge I throw at it.
I acknowledge EE’s superior custom fields but balk at the lack of file management and steep pricing, so on balance, TXP still gets my loyalty. In the meantime, I do plan on familiarizing myself with EE because actual user experience trumps feature set all the time.
ah yeah expression engine forgets to strip tags like if you do the following:
{embed=".header"}
which is wrong, because it needs the template path:
{embed="inc/.header"}
it will just print out {embed=".header"} to the page, it won’t silently fail, which is weird.