Posts Tagged ‘wordpress’

Which CMS is Best?

Monday, December 1st, 2008

It was once the case that a staple of any web developer’s job was to provide ongoing content updates for their clients. However, in a “web 2.0″ world of ever expanding, dynamic content, this model has become obsolete and often unsustainable. Developers’ time is best spent developing, not performing data entry and copy editing tasks.

Enter the content management system, or CMS. The increasing popularity of scripting languages such as PHP, ASP, and ColdFusion made it easy for even novice developers to deliver database-driven sites, and we saw the birth of an infinite number of custom content editing solutions, from simple and quick to robust and involved. Custom CMS development is still a very common (and sometimes appropriate) approach to dynamic content, but several excellent solutions have emerged that can prevent you from having to re-invent the wheel every time you need to deliver a CMS solution to a client. I will discuss 4 popular CMS products in this post, all of which are either free or very reasonably priced. There are, of course, a number of expensive commercial solutions that target niche enterprise markets, but I’m going to use this post to discuss systems that can be implemented on a budget while still providing the features and functionality to build a robust site. Hopefully this article will help you in choosing a content management system that will best suit your project.

Expression Engine

http://www.expressionengine.com

Cost: $249.95
Pros: inuitive back-end interface for easy content editing
Cons: templating system is a bit more development intensive than some others

When I talk about ExpressionEngine, I always first disclaim that I am not affiliated with its development or parent company, Ellislab, in any way. The reason for this disclaimer is that my description of EE can sometimes sound like a sales pitch – I just happen to personally like it and find it to be quite intuitive. With that being said, let’s continue:

ExpressionEngine has become my CMS of choice for sites that have a newspaper or magazine feel. It seems to lend itself to these sorts of projects extremely well, especially since the back-end interface is extremely intuitive and is therefore easy to teach to a diverse staff of writers, editors, or other content-creating personnel. It, of course, has the staples of a good CMS – pages (called weblogs), categories, user management, and customizable templates. From a development standpoint, the templates are configured very much like views in a model-view-controller architecture, where you have separate templates for each page that contain specialized markup tags. These markup tags are used to pull content from the database, and your surrounding HTML and CSS provide the look and feel. Personally, I like this approach, but it can be a little bit more development-intensive than some of its counterparts (e.g. Drupal, where everything is organized into blocks). The documentation and support for EE is also excellent, so the learning curve for their custom template system is very easily overcome.

One EE feature that I absolutely love is the ability to assign custom fields on a per-content type  basis, which means that the editor for a media entry can look very different from the editor for a news item, since they will very likely have different fields. Again, this gives a very intuitive feel to the administrative interface, which is a necessity if multiple people of varying computer skill will be editing content.

Overall, I would recommend EE for use in content-managed sites of a low to medium complexity and, as mentioned above, it works especially well for magazine or news sites.

WordPress

http://www.wordpress.com

Cost: Free
Pros: Free, easy install
Cons: Typically functions more as a blogging tool than a CMS

Let’s face it, WordPress is a staple of the blogging community at this point. It’s free, it’s simple to install and use, and it’s customizable. In fact, it’s so customizable that it has long since blurred the line between blogging tool and full-blown content management system.

The blog you’re reading right now is a Wordpress blog, and you can see that I’ve fully integrated  it with the Fuse PHP MVC Framework that drives the rest of our site. WordPress uses straight PHP as its templating engine, so it’s easy to start customizing right away, even with only an intermediate knowledge of PHP. Personally, I’m more a fan of tag-based templating engines like the one in EE, but can definitely appreciate arguments for the more direct approach of using the scripting language itself (e.g. PHP) as the templating engine.

WordPress has a slick and easy interface, though the custom field options do leave a lot to be desired when compared to ExpressionEngine’s implementation. However, it’s not unlikely that a plugin or extension can take care of that issue, either now or sometime in the future. All of the CMS products discussed in this entry have a modular, scalable architecture, and especially in the case of WP, Drupal, and Joomla, there is a seemingly never ending supply of add-ons that can help adapt the solution to your specific needs.

As a blogging tool, WordPress is top notch. Personally, I would probably pass it over in favor of one of the other solutions discussed here when looking for a fully functional CMS platform, but many complex Wordpress-based sites have emerged, proving that WordPress is extensible enough to hold its own as a CMS solution.

Drupal

http://www.drupal.org

Cost: Free
Pros: Extremely versatile and extensible
Cons: A little trickier to configure than other systems discussed

Out of the box, the default Drupal install doesn’t look too impressive. However, in this case, looks are very deceiving. The extensibility of Drupal is seemingly limitless, and the API is well documented. This combination ensures that you can customize the system to suit your specific needs. The beauty part? It’s likely that you won’t even have to build your own extensions, because so many free modules are widely available and easy to install.

It’s important to note that everything in Drupal is done via a module, even functionality that you might expect to be part of the base install. This is why, as I mentioned above, the default install appears to be a bit lackluster. However, modules are extremely easy to find and install, and many of them are included (although disabled) by default. I recommend starting with at least these modules: Blog, PHP Filter (allows you to write PHP in your blocks), and Taxonomy (categoriztion of content).

For CMS-driven sites that will require an increasingly complex integration, Drupal is the way to go. Its extensibility and huge development community make it the winner when dealing with projects that fall outside the standard boundaries of a normal content-managed site. As an example, we had a client approach us about an Intranet CMS for their company, but they also stipulated that the solution needed to authenticate against their existing Windows Active Directory. Additionally, they had other, separate web-based applications already in place and wanted those applications and the CMS to use a single sign on system. The solution we came up with was an implementation of Drupal and CAS. While the other CMS solutions discussed here support LDAP (Active Directory) authentication, Drupal is the only one with an existing CAS module.

Joomla!

http://www.joomla.org

Cost: Free
Pros: well supported, extensible, clean interface
Cons: lacks granular user permissions

I have to admit that Joomla is the system discussed in this post that I personally have the least amount of experience with. Although I tested it as a candidate for one of our projects, it ended up losing to Drupal because of its lack of granular user permissions. Like Drupal, Joomla is open source, well documented, and has a vast array of available extensions. Joomla’s templating system is block-based and configurable through XML and PHP, not unlike the E-Commerce solution Magento, which I will be discussing in another post. This style of template building is very extensible, but will be a bit of a learning experience for most designers.

The Joomla administrative section is very slick, and I personally prefer its terminology over even ExpressionEngine’s – Joomla refers to “sections” and “pages” rather than “weblogs” and “templates”. Dropdown menus and intuitive navigation icons provide a very pleasant user experience, and the feel overall is very non-threatening, but still very robust.

As I mentioned above, I was forced to use Drupal over Joomla on one project because Joomla’s user permissions aren’t granular – there are preset groups that all users have to be fit into. Now, most of the time, this will not be a problem, especially if only a small handful of people will be editing content. However, in a large organization, finely grained control over user permissions is essential. I understand that Joomla 1.6 has made granular permissions a priority, and a stable 1.6 is very much on the horizon.

Conclusion

Hopefully I’ve given a concise but useful overview of some of the more popular CMS products on the market. My mantra is always that you should use the best tool for your specific job, and each of these systems deserves consideration depending on the needs of the CMS project. I didn’t get into detail on specific features because you can get complete feature comparisons at the fantastic site CMS Matrix.

Please feel free to comment with any questions. Thanks!