I recently gave a ‘Day 2’ talk at the excellent Front End Design Conference about the pros and cons of WordPress, Drupal and ExpressionEngine – 3 of the most popular PHP Content Management Systems (CMSs) in use today.
Having used all 3 tools pretty rigorously over the years, I compared 18 different factors and requirements that people usually look for in a CMS – and recommend the best tool for a blog, magazine, small business, corporate or complex website.
Picking up from Slide 7…
The wrong software or tool can stop you from doing great work
Because of that, I believe as much as technology is an amazing enabler of ideas, if you pick the wrong technology, it can do the opposite and actually disable you.
It’s really frustrating when you have to go through a long process to do something pretty simple. Has anyone used Magento Commerce? Yeah you guys know what I mean.
The frustration is twice as bad when you’re a UI person, because, the chances are, you’re a perfectionist, and you want to spend almost all of your time improving the UI.
A lot of what I’m about to say is from personal experience. So that that doesn’t necessarily mean I’m correct, because I’m drawing on my experience from a sample of few dozen projects.
I will say I don’t have any loyalty particular towards any tool or technology – I use anything that gets the job done. For example, right now I’m using Windows on this Mac. Don’t ask why, it’s a long story; all my friends hate me for it.
OK, so let’s talk about CMSs…
Content management vs. Web Page building
Many clients use CMS’s like web page builders. We as designers and developers concentrate on the skin and have a space in the middle of the page where the client can add text, pictures, video and tables using a WSIWYG editor. And that’s exactly what happens. The client will add all kinds of weird stuff into that middle space, and they will style it in ways that you thought impossible.
I’m sure many of you have had sites you’ve looked at 6 months after you handed it over, and it looks wrecked. Well, it’s partially your fault, because you allowed them to do that.
On simple sites, say a portfolio site, or a blog or when there are less than 25 content pages on a site, you can use any CMS, it doesn’t matter. Personally I like CMSMadeSimple for simple business sites – clients love it.
But on big, complicated website, you can get into all kinds of trouble.
Let me illustrate…
Breaking down the content
If anyone has experience with databases, you know that you’re supposed to break down the data to the lowest level. For example, if you have a person database, their name, address, age, height would be stored in separate fields. If you didn’t do this and mixed it all together it would lead to data duplication and make it hard to find anything.
Let’s take a real example – imagine we have a university website:
Events – News – Departments – Faculty – Student Work – Publications – Research
Each of these sections has content which is connected to each other.
For example, the same news story might appear on the News page, Department page or Faculty page (if it was relevant). Also, Publications and Research can appear on Faculty pages. There are lots of other linkages, but the point is that we do not want to duplicate content and manually link things together.
Defining the content
You can see that using the database model is useful here – I need to define, map the different types of content and link them together:
- Content is usually a mash of data, text, images, media and tables
- There are relationships between content
- Content is re-used (not necessarily in the same format)
- There is a mix of ‘streams of content’ vs. ‘static content’
Knowing this stuff help you in your design, because we design around content.
Let’s talk about EE 2, WordPress 3 and Drupal 7
- Will this CMS make my life hard and screw up the output? Is setting up the structure of content and templating easy? Will the CMS add extra markup and junk to the output?
- Will my clients be able to use the site when they left alone? To use a WSIWYG editor properly, you need to know HTML, which clients don’t know. I would prefer to give them simple ‘forms’ to fill out when add they content.
- Regularly updated – big dev teams with successful companies driving them.
- A big, friendly community – useful forums with help for newbies.
- Lots of plugins – high-quality, updated and supported.
Out of the box, for some reason all 3 CMSs assume you’re going to build a blog.
Also, each CMS is fairly limited out of the box, but by adding plugins, it changes how useful that tool is.
You will notice most plugins are for ExpressionEngine because EE is not very useful without them! WordPress has thousands of plugins, but in many cases there is no clear leader in a particular category, so none has been recommended.
- Defining content: Matrix (EE), Low Variables (EE), CCK (Drupal)
- ContentRelationships: Playa (EE), Views (Drupal)
- Content Structure & Heirachy: Structure (EE),
- Displaying Content: Structure (EE), BluePrints (EE), Views (Drupal), Panels (Drupal)
- File Manager: Assets (EE)
- Performance: W3 Cache (WP), CE Cache (EE), Boost (Drupal)
- Publishing Workflow: Better Workflow (EE), Workbench (Drupal), Rules (Drupal)
- Search: Low Search (EE)
So which one would I pick?
Drupal and EE are not brilliant without certain Plugins.
WordPress is still primarily a blogging tool.
So which one?
All of them … with conditions
- Blog = WordPress
- Magazine = WordPress
- Small Business = WordPress or CMSMadeSimple
- Big Corporate = Drupal
- Data-driven / Complex = ExpressionEngine or Drupal
- E-commerce = ExpressionEngine
If you come across the problem of clients cutting and pasting from Word into your WSIWYG editor, then I have a cool tip.
You should use CKEditor, and at enable the following plugins in the config:
In addition, you can remove extra buttons to eliminate the problem of weird markup getting into the website.