Many people who know me know that I am not a big fan of most web content management systmes (CMS). In general I have found that the hoops these systems make you jump through to set up and manage sites far outweighs the benefits they bring for easy content maintenance.
I am not, however, a content guy. I’m a pretty good editor, but as far as writing original content is concerned, I suck (that’s probably why I blog so infrequently). For that reason I am trying to offload some of the website responsibilities for Tay House onto other people. Bringing more people into the mix means that I need an easy way for them to manage the site without them being able to screw up my design (I’m kind of anal about that)–and doing that pretty much points to using a CMS.
A couple months ago an online acquaintance asked me to get involved developing a CMS called OpenLeaf. Openleaf was a fork of another CMS called Immerse and I was rather impressed by it—it had a nice interface with full control over templates, custom template variables, and a nice live edit feature. Unfortunately OpenLeaf was still rather immature and I didn’t have the time necessary to develop new modules to do what I wanted, so I found myself doing a lot of things by hand. Because of the trouble finding talented developers to assist with the project, it now seems to have been shut down, too. Too bad, too, because it has a lot of promise.
Last week I started looking for a new CMS for the Tay House site and headed to OpenSourceCMS.com to check some out. After reading a couple of positive recommendations for it on other sites, I decided to take MODx for a spin. After playing with the admin interface on OpenSourceCMS for a while, I decided to download and install it on one of my servers and I’m happy that I did. Within about an hour I had my templates built (the design, base XHTML, and CSS were done in advance, of course) and I was already starting to implement features like automatic menus and breadcrumbs.
Ironically, MODx and OpenLeaf are distant cousins—MODx is a fork of Etomite which was evidently originally developed by the founders of Immerce.
MODx has a very active community with lots of contributers providing code. So far, for everything I’ve wanted to do, I’ve found a solution. MODx makes it easy to build complex sites with the use of custom template variables, chunks, and snippets.
Template Variables (TV’s)—One of my biggest frustrations with a lot of CMSes is that they provide a single “content” field in their editors. I often create designs that have multiple areas where I’d like to include content–and often its not just display content but rather, perhaps, a variable CSS class to affect styling on certain pages or something such as that. MODx allows me to create as many custom template variables as I need in a variety of formats, such as text fields, rich text fields (WYSIWYG enabled textareas), or dropdown lists. MODx isn’t quite as flexible as OpenLeaf in this regard, but the difference is so minor its hardly worth mentioning.
Chunks—Chunks are nothing more than little pieces of HTML, stored outside of the main templates, ready to be shared across pages. In my templates I’ve been putting my common headers and footers into chunks—that way, at redesign time, I only have to change them once to change the whole page.
Snippets—Snippets are little pieces of PHP code that make up the real power of MODx. Want to insert the current date on a page? Add a snippet. Want to build a menu of all child pages of the current one? Add a snippet. Snippets can also reference chunks to display different information based on certain circumstances, making it really easy to build dynamic, easy to maintain content–including validating forms–without having to break out of the CMS.
Within a few hours of the install I had a fully working site (sans most content, of course). I’m now making tweaks–for example, in one section of the site I wanted to add previous and next links to easily move between pages, which the PrevJumpNext snippet is designed to do. However, PrevJumpNext has a ton of options and to get the output I wanted required me to pass about ten different options to the snippet and that still didn’t still didn’t get me exactly what I wanted. With about a half-hours work on a lunch break the other day, though, I was able to trim it down to “light” version that does exactly what I need with no fuss.
While I still have reservations about CMS tools in general, I’m already thinking of how MODx can help me with other projects I want to take on.