Switching Mindsets: From WordPress to ExpressionEngine
I’ve been a devoted WordPress user for the past four years. I had invested quite a bit of time into learning MovableType when a developer friend suggested I try WordPress instead. The minute I saw its templating system, which is both flexible and easy for a designer like me to grasp, I was sold. It proved to be remarkably "hackable" and at Syracuse University (my previous employer), we frequently used it as a web content management system for clients with simple needs. It worked well enough, and I was content to stick with a single software package—until now.
Before coming to Viget, I never had the opportunity to build a site using ExpressionEngine. At colleges and universities, it’s common to use open-source software, partly because of budget constraints but also because the idea of collaboration and knowledge sharing is so synonymous with academia. So when I was tasked with implementing a client site in EE, the geeky side of me was thrilled while my designer side was nervously wondering if it would require more programmer smarts then I have.
After a quick overview, I dove right in, Googling anything that didn’t make sense. There is plenty of good documentation and a great support forum, so finding answers to my questions was easy. I have good news for all you designers out there: no crazy, black-belt coding skills required. It only took a few days to learn the basics and get my first EE site up and running flawlessly. There were a few things I struggled with, though—for example, mental roadblocks that probably wouldn’t have been as confusing had I not been entrenched in the WordPress ways of doing things—so for other WordPress users thinking of switching, here are a few tips:
- Get over the term "weblog." To me, a weblog meant a big—well—blog, with all sorts of page types and info and categories and whatnot attached to it. In EE, a weblog is a container used to store information and organize your data. I used a separate weblog for nearly every page in the small site, which seemed counterintuitive at first. It makes more sense when you start creating custom fields and assigning them to each weblog. Basic lesson: Don’t be afraid to make lots of weblogs for a single site. You can change your preferences to call it something else (like "section"), but the template tags will still call them weblogs, so I found it easier to just adjust my thinking. (Note: Rumor has it this term is being dropped in the upgrade to 2.0, so in a few months you won’t have to worry about this!)
- Start thinking in smaller chunks. In ExpressionEngine, it’s much easier to break your pages up into structured pieces of content (title, thumbnail image, summary, body content, etc) using custom fields. You can create custom fields in WordPress, but it ain’t easy and it often feels like you’re doing backflips to cobble together complex pages. In EE, you can make as many custom fields (bundled into "field groups") as you want. You then assign the field group to a weblog, and voila! Lovely structured data. The level of control you have is amazing, and it doesn’t require extra downloads or add-ons. Which leads me to #3...
- Say goodbye to crappy plugins. If you want to do anything fancy with WordPress, it requires a plugin. Which is no big deal; downloading and installing one takes all of a minute or two. BUT, you have to sort through a lot of garbage to find a plugin that works and is not in perpetual "beta." Because WordPress is open source, programmers everywhere are writing their own plugins for it. Some of them are awesome. Lots of them aren’t. EE has much more out-of-the-box functionality. The only plugin I installed was for a mail form, and it worked great without any tinkering. The add-ons in the ExpressionEngine library have been tested and accepted by its creators, so you can expect them to work.
- Finalize your design before moving it into the system. My original xHTML/CSS templates and the templates I ended up with in WordPress usually weren’t all that different, so modifying them outside of the editor and then copying/pasting them in wasn’t a big deal. In EE, my original templates got chopped up into small chunks right off the bat. This made big design changes overly confusing. Next time around I’ll spend more time working out design details before I move the display templates into EE.
- Expect to spend a while finding things in the control panel. It seems unnecessarily convoluted. It took me a while to find things and memorize the patterns. Create a weblog, then create a field group with custom fields, then assign that field group to a weblog, then make a post in the weblog.... yikes. It felt like a lot of steps. I know it’s partially because you have such fine grain control over things, but I’m sure the interface could be simplified so everything wasn’t five clicks away. Saving graces: you can use the back button, and you can open multiple tabs to work on things. I often keep my stylesheet template in one tab and another template (like a page template) in a separate tab so I don’t have to navigate back and forth quite so much. It appears the upcoming ExpressionEngine 2.0 upgrade will be a huge improvement, so I can muddle through until then.
- Say goodbye to PHP tag soup. My EE templates look so pretty and streamlined compared to my WordPress templates! With so many built-in functions, there’s just a lot less code to look at. All I have to say is, HOORAY. I’m obsessive compulsive by nature, so a few lines of clean code makes me much less anxious.
Shifting my thinking (and learning a CMS new system) was well worth the effort. I have found EE to be much more powerful than WordPress, and not nearly as hacky. I’m looking forward to working with it more in the future. There seems to be no end to its functionality, so it’ll keep me busy for a while.
A few sites I found especially helpful:
Thanks for the mention - glad you found the series helpful!
Your last statement, “There seems to be no end to its functionality, so it’ll keep me busy for a while”, is very true. Once you think EE can go no further, you suddenly discover a whole new level of functionality and simpler, cleaner approaches to include them in your projects.
@Boyink your series saved us countless hours while making this site. Sir, we are in your debt.
Good post Mindy.
To clarify #4, one doesn’t necessarily have to chunk up their master html/css in EE, you can include it all in one template, but it does make it much more manageable to use what I call template fragments - header, footer, sidebar, etc. and embed them in other main templates. A change to the master then ripples through all other templates using that fragment.
Boyink - Thank YOU for making things so much clearer!
Geof, I have no doubts I will look back at my first site and be horrified by how unsophisticated my templates are… looking forward to learning new and elegant ways to use EE.
PXLated - good point. I was primarily thinking about the custom fields for data, which let you create and control things on a much more granular level. There’s no need to chunk out your design templates if you don’t want/need to. And actually you could break your design templates up in WordPress by using lots of includes, but all of it feels much easier to implement in EE.
Wow, sounds awesome...I’m still livin’ in Wordpress realm :)
I’ve really enjoyed seeing so much love for EE on the Inspire blog. I’ve been a happy EE user since 2005, and can’t seem to bring myself to use any other CMS (at least not happily use any other CMS). It’s so refreshing to see such a pristine company continually sing the praises of EE. Keep it up!
This is a very reassuring post to read. Like Brandi, I’m still in Wordpress world, but I’ve been thinking about EE for a long time, I just haven’t made the jump yet. I’m coming more from a design standpoint, so hearing that marking up the EE code isn’t bad is good to hear.
After having used WordPress, TextPattern and a myriad of other blog/CMS systems, I keep coming back to pMachine/EE.
I am in my second year, learning, modifying and tuning my site.
Constant evolution :)
Thanks to Michael Boyink for the instuctionals, Ellis Labs for their hosting, the team at EE for their support, and Viget for another insightful article praising EE.
Great post, I am just starting to research and getting into using a CMS, i have a few questions.
So when creating a site and using a CMS like wordpress or EE, what makes them easier to update and maintain control over your website?
and how do you make it easy for a client to edit a news post, or update things on their own?
Chris - A CMS like EE allows you to totally separate content from presentation. The client never has to see code and can add/delete/modify content easily without the designer/coder’s help.
Hi Chris,
A CMS doesn’t always make a site easier to update, especially if you are a web developer who knows how to write and maintain code. The best strategy for choosing and implementing a CMS depends greatly on what type of site you’re working on. If a client is going to want/need to update it, chances are you’ll want it on a CMS.
Even though I know web code, I built my personal portfolio (http://mindywagner.net) on WordPress so that I had a standard format (description, thumbnail image, bigger image, category, etc) for every design piece I put on my site. I use WP categories to automatically organize things. When I post a new design I categorize it web, print, or identity - or some combination of these three. Then it’s sorted on the front-end without me manually adding each new “post” to the necessary pages.
Viget.com (and all 4 blogs) are built on EE. I’m sure Doug can elaborate on the many reasons why, but one obvious reason is that it allows everyone in the company to edit and add to the site without knowing code.
A good way to help less tech-savvy clients get used to the CMS is to create a detailed how-to manual for them with specific instructions and lots of screenshots. A manual can be time consuming to put together, but it will cut down on confusion and give them something to refer to when they are stuck and you aren’t available. Some people go weeks or months between updates so even if you give them a great face-to-face overview it can be forgotten by the next log-in.
Sing it, sister!
I expect that version 2.0 will work out most of its remaining shortcomings and crown EE king of the CMSs for a lot of people.
PXLated, Mindy:
thanks for the explanations, I have a better idea now about it all :)
Good tips, thanks. I’m only waiting for EE to support OpenID and learning what I can about EE ‘til then.
Devon:
I’m working on a plugin for OpenID for EE. It’s coming along quite well. We’re hoping to release soon!
Is the free version of EE comprable to Wordpress, or do you have to but the licensed version to really take advantage of it?
I wouldn’t be able to implement a licensed version for now, but it sounds like you don’t get nearly as much without paying. What are your thoughts?
Hi Chris,
The EE “core” package (https://secure.expressionengine.com/download.php?ACT=agreement&id=34) would be worth downloading. I installed it on a demo site a few days ago and from what I can tell, it’s got enough functionality to run a basic blog or web site with custom templates. I haven’t built an entire site on the core package though - does anyone else have input?
One thing to note, the install was a bit of a pain. The new version should be better, but in the current version your URLs will all have “index.php” in the structure unless you take these steps: http://expressionengine.com/wiki/Remove_index.php_From_URLs/
It took me a few extra minutes to sort that out but I was able to get the core package installed and working properly on a personal Dreamhost account in about an hour.
You hit the nail on the head with each of your points. I spent a few hours last month getting acquainted with EE for a project at work. Usually, I find myself working in WordPress and much of the confusion I experienced trying to understand EE seems similar to your experience.
Thanks for writing this and validating my perplexed feelings over their use of the word ‘weblog’ and the martian landscape of the admin interface.
For all the reasons you stated I too have added it to my toolbox of development platforms (tagged: fast, flexible)
Couldn’t agree more with your article, Mindy. EE is a *huge* leap ahead of WP. I’ve only used it for one site, and that was that: I’m a complete convert.
I liked this article. I have heard some conflicting views on both CMS’s and appreciate you putting it into a good feature by feature comparison.
Having worked with many CMS’s before settling on one as my specialty, I found EE to be somewhat convoluted.
You can build almost any type of site with EE, it is incredibly powerful, but don’t expect to be able to do simple things quickly.
For example, with my everyday CMS, you can create menu items through the back end interface and even assign access levels so they are only shown to registered members. The menu is automatically and dynamically generated by the CMS and the display is controlled by the template.
With EE, you have to manually code each link of the menu, using EE’s tag syntax, into your template or as a separate template and include it in the main template.
If you have sub-menus to display when parent items are selected, well that’s another hard coded menu template.
It has been about 18 months since I used it, so things may have changed a bit, but at the time I was thinking I might as well just hard code the entire site.
Having said that, there are aspects to it which totally shine and are far better than my current CMS. Each “weblog” or section of your site can be set up with any number of custom input fields in the back end and the front end output templated in any way you like. Your “weblog” form for your News page has different input fields to the weblog form for your contacts, etc.
@Joomla Developer: I haven’t used it extensively, but I know that some of these concerns are now handled in a wordpress-style “Page module” that allows a dynamically-created menu to pull from a list of pages. Still, it would nice to have a solution for this by default, as page creation and placement are pretty standard features for a client-usable CMS.
Uh - I hate CMS grudge matches.
But I hate misinformation worse.
With the proper (and relatively simple) template setup EE can build navigation menus dynamically, without requiring the Pages module or any other 3rd party piece.
I have a number of examples available showing how.
One of the big paradigm shifts coming into EE from another CMS is that EE doesn’t think about a website in terms of “pages”.
Rather your site is comprised of posts - and a post and provide the content for an entire page or just the copyright in the footer . It just depends on how you construct the site.
Trying to force EE to be a “page-based” CMS will lead to frustration - it’s a square peg in a round hole situation.
But once you can break free of page-based thinking it’s quite powerful and you’ll never want to go back.
Boyink,
You are right. This isn’t the place for a CMS showdown.
Just had a quick look through your site. You say “EE (like any piece of highly flexible software) has a learning curve… People who’ve used ExpressionEngine for a while will tell you that there will be a moment where everything just suddenly clicks - a ‘light bulb’ moment.”
Ummm… guess I never quite got there.
However, there have been moments when looking at a clients complicated requirements, I’ve found myself thinking I could probably do this with EE. But the learning curve has always put me off.
So, I bookmarked your site. There’s still a glimmer of hope for me becoming an ee convert. :)
I agree with Boyink - once you get past the idea of page-based building and start thinking of component-based building the lightbulb should at least flicker ;) It was tough for me to make that shift at first. Might just be a terminology issue on EE’s part - they use a number of not-quite-intuitive terms but once I cleared out my own mental clutter from past systems it wasn’t so bad.
Thanks for linking to the dynamic nav demos, Boyink. Those are great examples.
Good luck, @Joomla!
Have you ever dealt with exporting a blog from Blogger to EE? One with 7 years of archives? I have combed the EE forums and google for more info. Maybe I am making out to be more complex but I was hoping you or a reader might be able to give me some current advice?
Thanks,
Josh
Hi Josh,
Nope, haven’t done that yet - I had a Blogger account years ago but let it kinda linger there because I didn’t have much time or energy invested in it.
Maybe someone else can chime in with tips?
~Mindy
It’s been a couple of years but IIRC I was able to find a template for Blogger that would spit out a file in the Moveable Type, then ExpressionEngine could import that.
But it wasn’t 7 years worth either..;)
Thank you all for your response. I have come across two scripts for exporting the Blogger templates and although some of you may have never done this before I was hoping you might help me understand the tags used in the scripts and that will help me figure out why one is working and the other is not.
The first script I found here and it does not work...yet:
http://www.hopstudios.com/nep/unvarnished/item/importing_blogger_into_expression_engine/
<Blogger>
TITLE: <BlogItemTitle><$></BlogItemTitle>
AUTHOR: <$>
DATE: <$>
-----
BODY:
<$>
-----
<BlogItemCommentsEnabled>
<BlogItemComments>
COMMENT:
AUTHOR: <$>
DATE: <$>
<$>
-----
</BlogItemComments>
</BlogItemCommentsEnabled>
--------
</Blogger>
</pre>
The second script I found here and it does work but does not grab comments but it does what the author intended son no complaint. Just trying to understand why this one works and the other not and how to make the combined work to get both the normal post info and the comments:
http://neologasm.org/b2mt/
<Blogger><ArchivePage>
AUTHOR: <$BlogItemAuthor$>
TITLE: <$BlogItemSubject$></PostSubject>
DATE: <$BlogItemDateTime$>
-----
BODY:
<$BlogItemBody$>
-----
--------</ArchivePage></Blogger>
</pre>
If I understood what the script was doing and why the tags in the second one work then I can combine. Anyone think they can help me with this? Once I get a script that works I will post for all to use...happily and share my process to help others out:)
Many thanks in advance,
Josh
I have tried this script which is a modification of the two I linked to above. I get the main post info alright but the comments are not coming in. Any suggestions?
<Blogger><ArchivePage>
AUTHOR: <$BlogItemAuthor$>
TITLE: <$BlogItemSubject$></PostSubject>
DATE: <$BlogItemDateTime$>
-----
BODY:
<$BlogItemBody$>
-----
--------
<BlogItemCommentsEnabled>
<BlogItemComments>
COMMENT:
AUTHOR:<$BlogItemAuthor$>
DATE: <$BlogItemDateTime$>
-----
</BlogItemComments>
</BlogItemCommentsEnabled>
--------
</ArchivePage></Blogger>
EE has always intrigued me - I’m a WordPress user & developer, too.
The learning curve piece makes me just a little nervous, but it’s the $250 price tag that keeps me away. I don’t want to sound pessimistic, really… but it’s a hurdle, I’ll admit it.
Adam - Can’t blame you for avoiding extra expenses when free options abound. I always did the same.
One thing we should all consider, though - if you do client work and charge by the hour, your time is money. If you build complex sites in WordPress you could probably save some time by doing them in EE. You have the initial time/money investment (cost of system plus time to learn it) but over the long haul it could potentially pay off. Depends on what kind of work you do. Have you tried the free “EE Lite” download? That’s what I’ve been using just to toy around with and it’s pretty full-featured.
One thing we should all consider, though - if you do client work and charge by the hour, your time is money. If you build complex sites in WordPress you could probably save some time by doing them in EE.
Amen, sister. I have a hard time understanding folks that don’t want to use something because it’s not free. It’s just going to be billed to the client anyway, so what’s the hurdle?
Actually, in the rare case that a client doesn’t want to pay for an EE license, I will happily pay out of pocket for it, just so that I can use it in the project and save myself not only countless hours but much hair-pulling and teeth-gnashing. And to be frank the low price of EE has made it a tough sell in some cases—some clients are skeptical of a professional CMS under $5k!
Trackback URL: http://www.viget.com/trackback/1182/
Comments for this entry were closed after 60 days.
Next entry: Is it time to ditch IE 6?
Previous entry: Simple jQuery Solution To A Simple Problem

Recent Comments
The capcha code was Ill and so is your work. ill....very good
- Haya on 'Creating Unique Shapes Using Actionscript'.
- Erik Olson on 'Creating Unique Shapes Using Actionscript'.
- Rainbow on 'Resizing rounded rectangles in Photoshop'.
Subscribe to Comments RSS