CMS Roundup: The search for the perfect Content Management System
What is a CMS?
CMS stands for Content Management System. In the old days, all content was stored in static, HTML pages. Adding a page meant creating a new file, copying the layout from another page, and then adding the content. If you wanted to add a new item to the menu, or add a banner to every page, you would have to manually change this in every page. Extended search and replace made this easier, but wouldn't work perfectly every time. This is how I did it on my very first sites, and needless to say, none of them were very large, and they weren't changed a lot.
The next step in my progression as a designer was shtml. Now I could place the code for my menu in a separate file, and include it server-side every time a page was loaded. In fact, my entire layout could be stored in one file, and I could change the look of my site instantly. This helped, but still lacked the power that I needed.
Next came PHP and MySQL. When I learned them, they opened up a whole new world to me. Now I could not only store the layout in a separate file, I could easily change the format of the content as well. I could store my content in a MySQL database table, then insert into the page however I wanted. Then I created my own custom CMS for my site, but it isn't very powerful and only works for my site.
My latest step? Open Source Content Management Systems. The idea is that hundreds of experienced coders working together can create something better than I can. Now a CMS won't work for every site that I develop, but I want something that will work for the average site.
A word of warning. Your choice of a CMS is VERY important. This is how the site will be changed and content stored. Once you deploy a CMS, it is very hard to switch to another, and it only gets worse as the site gets larger. Plan to stick to one CMS unless you are prepared to undergo a major redesign.
Is a CMS for me?
It depends on your project. If you would people to edit your site without using HTML, then a CMS of some kind would be a good idea. If the page is going to remain the same, and not be changed a lot, probably don't bother with a CMS. But if you want to easily add on to your site without ever messing with code, CMS's will help. If you plan on having a lot of content, CMS's will help.
Advantages
- Custom Addons: Many CMS's are open source, which means that people create lots of "modules" or addons that add functionality. A CMS can add buttons for a PDF version of the page, print the page, email the page, highlight search terms in a document, and provide tool tips for abbreviations - all at once, without you having to write these scripts.
- WYSIWYG: You or your client can edit the content without having to touch the files at all, and even use a WYSIWYG editor.
- Templates: CMS's help to separate content from layout, which means that if you want to change your site layout, you do not have to redo every page.
- Time: If you are going to make your site CMS driven anyway, taking code that has already been written will save time.
Disadvantages
- Flexibility: This is the greatest downside. It can be very hard to change little things in most CMS systems. And the more complex they become, the harder it gets. You have to fit your site to the CMS, not the other way around. But you don't have to code your own CMS.
- Learning Curve: Every CMS is different, and take time to learn how to use. Some are easier to learn than others, but all of them take some getting used to. I have tutorials on my site to help you learn these systems, but it can be aggravating sometimes trying to figure something out. So if you're a PHP expert already, you still have to learn a few things before you can start hacking code.
Custom CMS?
Depends on your requirements. Right now, I used my own CMS on my site because all I needed was to change the layout and organize my tutorials. It is simple, so it is very easy to change. But this simplicity also means that it doesn't have a WYSIWYG editor to create or edit content, but I prefer typing XHTML anyway.
Now the big question. What is the purpose of this article?
I wrote this article to make the search for your perfect CMS easier. To show you why a made the decisions that I did, and where my opinions come from, here are some of the requirements that I had:
- Page-Based: I want a CMS based on pages, not posts (like blogs).
- Runs on LAMP: In case you don't know, LAMP stands for Linux/Apache/MySQL/PHP. My favorite hosts all use this setup.
- Runs on shared hosting: Same reason as above, I want to be able to host it without an expensive dedicated server.
- WYSIWYG editing: clients need to be able to add content without getting their hands dirty.
- Friendly URLS: Not a must, but a preference. Makes your site much more search engine friendly.(i.e., /tutorials/index instead of page.php?id=112§ion=10&category=2)
- Open-Source: Free as in speech and free as in beer. I believe in Open-Source (I run linux on my PC) and with all the choices out there this was a no-brainier.
- Easy template engine: Easily change the layout of the entire site.
- Flexibility: Integrate my own PHP scripts easily to the site.
- Modules and Built in Applications: Are there a lot of modules and hacks? The bigger the community, the better the product, usually (especially with open source). I would like to be able to easily add search, polls, chat, etc.
- User Management: Is the system easy to integrate into custom scripts? Can you put permissions on directories?
- E-commerce: Is it possible to integrate a e-commerce solution into the site? Does the CMS come with e-commerce capabilities.
- XHTML / Standards Compliant: I used XHTML and CSS to design pages, so I would prefer if the CMS outputs valid markup.
- Auto-Generation of Bread Crumb Navigation: This would be nice
- Usable UI: I want the admin UI to be simple and easy to use. I don't want my clients to have to read 300 pages of documentation in order to add a page to their site.
- Easy Installation: The less time I spend to make everything work, the better for me and my clients.
- Documentation: This isn't a must, but it would save a lot of time while I learn the program.
For days I scoured the web comparing tons of CMS systems, and in the end, narrowed it down to three CMS's. There were a lot of smaller CMS's out there that looked good, but I didn't have time to look at every one, and felt that the larger the community, the more likely it was that they would have the features that I needed. Here are the contenders:
- Mambo
- Exponent
- Sitellite
I couldn't find out everything I needed to know just by reading through forums and looking at pretty screenshots. My first step was to demo all of these to make sure they met my requirements. Playing with their demo was not enough though, and I needed to know exactly how they work. So to test these I installed them on my server, I tried creating a site with each. In the following sections, I will document on each step of the way, as well as rate each of these products.
Note about Browsers: I use Firefox (100 times better than Internet Explorer, try it and you'll see), but unfortunately, most of the WYSIWYG editors in these programs are for Internet Explorer only, with the exception of Sitellite, which works fine in Firefox. This isn't a problem for me, because I know HTML, and most clients use IE anyway, so as of now this shouldn't be much of a problem. Mambo, for example, includes another WYSIWYG program that works in Firefox too.
"You only review three!!??"
Yes. There are literally thousands of CMS's out there. I narrowed it down to three because I couldn't test all of them. I wanted this CMS guide to be different. I wanted to actually use these CMS's, in real world development, for real clients, instead of installing them and just poking around, and guessing about how good they were. I wanted this guide to have quality. I hope that this is what separates this guide from the others.
This is about the process, not a particular CMS
I hope this is what will help every reader. My goal was not to just recommend a few CMS's, and list their upsides and downsides, but to lead them through the process of thinking about what you need out of a CMS. Many people never think about having to add their own custom script, or tweaking the code. I hope that this forces this to think about what they need out of a CMS, and hopefully let them make a better informed decision.
The Reviews
Here are the reviews of the three content management systems. They will open in a new window, but they will also have a link back to this page.