Drupal vs Expressionengine - A Designer’s Perspective
Category: Web Design - Published: Jun 25, 2012 - Tags: drupal expressionengine content management systemWell since I've been working with both ExpressionEngine and Drupal now for a little while I guess I should go over the pros and cons of using each. Just as a disclaimer I've disliked Drupal since I first got introduced to it back at version 5 but it has grown on me a little bit now that I use it at work for the day job. Plus version 8 looks pretty promising.
This is going to be long and thorough so feel free to stop and take a nap half way through, bookmark this for later or skip down to the overview at the bottom.
My Background:
I am primarily a web designer. I don’t know PHP really very well. Just enough to get by. So this comparison is best for front end developers or designers who need to learn a content management system and are considering one of these two.
I started using ExpressionEngine on my personal sites and some freelance work with EE 1.5 or 1.6, can’t remember which. Around that same time I had to do a little bit of work with Drupal 5 and have dappled with it occasionally after that but really got back into it again now with Drupal 7. I also have a few Drupal 6 sites I’ve done some work on, so I am fairly familiar with that. I’ve also worked with Wordpress back in the day and have a few sites currently using it. I’ve also dabbled with Concrete 5, MODx, and a number of lighter CMSes.
Theming a Site
For theming, ExpressionEngine beats Drupal pretty handily in both easy of use and flexibility. They both use very different approaches.
ExpressionEngine starts you out with a blank slate, whatever static html files you have, you can drop them into the CMS and are good to go. No PHP knowledge is required and the EE template tag system is pretty simple and easy to get started with. You can add in dynamic areas to your templates as the needs arise. I find this method a lot easier for designers.
Drupal uses a different approach. You select a prebuilt Theme and make modifications to that theme by overriding templates and styles. Which means you have to understand Drupal’s template and file structure as well as the ins and outs of Blocks, Regions and Views if you want to make anything half decent. This makes for a much larger learning curve. But once you get the hang of it, theming isn’t too bad. I barely know any PHP but it hasn’t hampered me. Really all you’ll be doing is copying and pasting snippets of code for the most part.
Drupal relies heavily on Modules and there happens to be one for everything under the sun, so don’t plan on having to do any coding for anything unless it is highly customized. Since someone has probably already built a module for any need you can think of.
For very custom designs ExpressionEngine can be faster theming. For designs that don’t vary much from the Theme you are using, Drupal can be faster.
Learning Curve
Again, ExpressionEngine has the easier learning curve but I’m sure you already now that. Drupal has been known to be pretty tough to get started with.
Learning Drupal
Drupal has a pretty steep learning curve because you have to learn the whole CMS, not just how to put a theme together. You need to know the basics of the file structure; what files themes are made up of and how you can override default theme files with your own files. You also have to know how the themes .info file works and how Regions, Blocks and Menus work to use Drupal on a basic level. It really shouldn’t be as hard as it is but the information beginners need is often hard to find.
Personally, I blame the drupal.org site for a lot of the confusion and difficulties people have learning the CMS. It is a fucking maze of useless information. Well, maybe that is too harsh. The problem is there is way to much information put together in a not very user friendly way, and 90% of it, you the designer will never need to know.
Regardless of how I feel, if you are planning on learning Drupal I suggest simply staying away from their site. The info might be good for developers but as a designer it is incredibly hard to find what you need. For whatever reason the most basic of questions and simple concepts can never be found but there are pages and pages of detailed information on stuff you will never need to know.
I applaud the effort people have put into Drupal.org. I know it is a community of people giving up their time for free, so I shouldn’t complain so much. It is probably nice for developers but if you are a designer who needs to learn Drupal, get a good book or find some video tutorials to follow. You will be much, much, better off.
If you want to learn Drupal I suggest you should devote at least a month to learning the ins and outs of Drupal if possible before taking on a real site, especially if it is your first CMS.
Drupal Learning Resources
Here are a few resources that can help you get started.
How to Create a Drupal 7 Theme from Scratch - I really like how simple this little tutorial makes theming. It takes out a lot of the clutter and just shows you the handful of things you really have to have in a theme.
If you are really are going to take the plunge and learn Drupal, I suggest dropping a little coin on some paid resources. The videos at Drupalize.me are pretty excellent. I suggest just getting the one month account which is $45 and pour over everything you can in that time. The cost is just a little more than buying a book really and the videos I find to be easier to digest. Plus they cover everything you’ll probably ever need to know.
Learning ExpressionEngine
ExpressionEngine does have a little bit of a learning curve to it if you working with a CMS for the first time. Unlike WordPress and Drupal there is no one click installation process. So you’ll have to learn to set it up a Database and upload EE to your server. Not really rocket science but for newbies it may take some time figuring out. That and setting up your local install. Which you’ll be doing with almost any CMS.
In ExpressionEngine you don’t really need to know how to use the CMS since any static html pages can be handed off to the developer but you might as well make yourself more useful and learn it. Almost all the information on your site is stored in the database as Channels. Each channel is made up of an unlimited amount of custom fields you can set up. So for a new site you will need to set up which channels you want to use, which custom fields you’ll need if any, and assign categories or statuses if you want to use them.
This is one area where EE is different from some other CMSes. You need to think ahead about how you will be displaying your content and make the right channels and fields to display your data the way you want it.
ExpressionEngine allows the use of simple HTML files as template in which you can add their EE tags. The tag language is fairly similar to html. Here is an example you’ll be using all the time:
{exp:channel:entries channel="products" limit="10"}
<h3>{title}</h3>
<hr />
{body}
{/exp:channel:entries}
This little bit of code is the Channel Entries tag. You use this tag pair to display information stored in the database. In this example you are displaying 10 entries from the Products channel, a title for each and the body of those entries. As you can see you get to add in your static html in and around the template tags as you please. ExpressionEngine doesn’t add any html or styles to your markup.
ExpressionEngine Learning Resources
Here are some ExpressionEngine resources I put together to get you started: ExpressionEngine Resource List. Should keep you busy for a while.
Nice Built in Features
You can go check out both websites and see the features they list but here are some I find useful.
Both CMSes take a little different approach to what comes out-of-the-box. Drupal relies heavily on third part modules which has its ups and downs. The development community for Drupal is huge so there are tons of good modules available. But it can be daunting finding the ones you need, figuring out how to use them, and can make updating with each version more difficult.
Drupal actually has a better built in navigation structure than ExpressionEngine, which really doesn’t have one. For static content Drupal is set up to work pretty nicely. For displaying dynamic content you’ll be relying heavily on the Views module.
Drupal also has an excellent permission system set up where you can hide, display and make editable different types of information in the CP and the front-end to various user groups. A lot of it is overkill for basic sites but for those websites with many different member types it comes in really handy. EE has similar setting but not nearly as detailed.
ExpressionEngine has more features built-in and relies less on third part add-ons. There is a much smaller but still active group of add-on developers for EE. You can check out many of the add-ons over at Devot-EE.
ExpressionEngine’s strongest feature is the ability to pull almost any content from the database and display it how you want quickly and easily. Drupal requires the Views Module and a little bit of learning before you can actually use it.
One of the drawbacks of EE is there is not a way of creating editable navigation that clients can update easily themselves. There are paid add-ons for it but it should be a built in feature. The built in Categories in ExpressionEngine also have much to be desired.
Not just with Drupal and EE but most CMSes there seems to be a tendency for the lions share of development time on making developers happy, and then designers, and the lowly users of the CMS get stuck with the crumbs. Every CMS could make creating content easier, editing and adding navigation, and dealing with media. These things should be bullet-proof and dead simple, but it doesn’t seam like the CMS developers make it much of a priority.
Both these CMSes could do a better job dealing with static pages although EE has some really nice add-ons clients would find pretty nice.
Documentation
The ExpressionEngine documentation has by far the better of the two. It really is quite good and for someone familiar with developing with other content management systems you can probably learn all you need to know just from reading over it. I go to it as a resource not a ton, but if I forget something it is nice to know it is there.
I’ve already talked a little bit about the Drupal site. I find it difficult to use and try to avoid it if I can find the info I’m looking for elsewhere.
Add-ons, Modules, Whatever You Want to Call Them
Drupal by itself really isn’t that powerful. The strength of Drupal is the massive amount of modules developed for it. It was one of the first CMSes widely used for ecommerce because of the large number of ecom modules like Ubercart, and is still one of the more common solutions you’ll see out there, for better or worse.
I really like the ExpressionEngine community but it is tiny compared to Drupal’s. There are many add-ons available but nothing quite like what Drupal offers.
Support & Community
One of the nice features of buying an ExpressionEngine license is the ability to get paid support via the forums. It is nice to have someone who will be their and make sure you problem gets resolved and not just throw out a suggestion and then disappear, leaving you hanging. It may take a week or two of troubleshooting but eventually you’ll get your problem fixed.
I don’t really have any experience with Drupal support aside from using Google to find answers to questions so I can’t really comment on that. I know there are companies who offer paid support for Drupal but have never tried them.
Both CMSes have a solid community behind them. ExpressionEngine’s is obviously a whole lot smaller but pretty friendly overall.
For Clients
Both CMSes are pretty comparable as far as teaching clients to use them and clients being able to do what they want to do. The majority of the sites content is displayed in one location in the Control Panel of each CMS. Both have editable regions that can be altered from the front-end of the site.
ExpressionEngine has a separate backend called the control panel where clients are able to create and edit content. Which means you need to keep two tabs open to view the front-end.
The Drupal 7 Dashboard is displayed over the top of the site.
Cons of Drupal
Drupals biggest hurdle is still it’s learning curve. It isn’t necessarily the hardest for clients to use but takes way too long for designers and developers to get a handle on.
Not really an issue but I don’t like the general amount of code bloat and extra markup that comes along with using Drupal. There is a dozen or more style sheets getting pulled from and extra html added to your templates that doesn’t need to be there.
Cons of ExpressionEngine
For me it still comes down to price. For people like me who build lots of personal sites ExpressionEngine is just too expensive. Well, anyone higher than free is too much. For a studio working with bigger clients the cost is a non-issue but it is nice to be able to make sites that don’t cost anything except the hosting and domain registration and you just can’t do that with EE.
Which Should You Choose?
Well it really depends on you. Being able to build sites in Drupal is a pretty valuable skill. You’ll see far more job opening for Drupal developers than any other CMS. So if you are purely looking at which gives you a better chance at getting a job, Drupal is the better choice.
If you are a freelancer who does it all, ExpressionEngine is probably a better choice. The learning curve is a lot smaller and far less painful. You can build fairly complicated dynamic sites without feeling like you’ve become a developer. If you do get stuck there is support available via the forums and the documentation is easier to decipher. Less headache can make all the difference for some people.