Underneath the hood of UltraEdit.com: A look at MODx

Most websites you visit today are rendered by a (usually) PHP and MySQL-based content management system (CMS). With the rapidly evolving web technologies available such as PHP, Ajax, openID, javascript libraries like MooTools and jQuery, etc., websites are crossing over from the passive point-click-read systems to full-fledged interactive applications. Designers are spending more time on interactive PHP and javascript scripts, and less time on CSS/HTML markup. Due to this; it’s imperative that designers and developers streamline content management and the mundane tasks associated with it, such as new content, updating existing content, etc. This is where the CMS works its magic. Most of you are probably familiar with open-source content management systems such as Joomla, Mambo, PHP/Post-Nuke, and many many others.

When we first looked into realigning our site, we defined several requirements to use as a guide for selecting a CMS. I won’t go into those in detail here, but generally these included scalability, flexibility, and search-engine optimization; which are all pretty much requirements for any sort of medium to large site. Through much testing and forum-browsing, I found a CMS that not only met these requirements but exceeded my expectations in MODx.

MODx CMS official siteMODx is an open-source PHP/MySQL Content Management Framework that evolved from Etomite (another CMS). What separates MODx from its brethren is that it (from what I’ve seen) is virtually unrivaled in flexibility and templating. The term “framework” is used because MODx does not necessarily *just* manage content; it provides a framework for setting up a system to manage site content management that works for you. Of course the drawback to this is that you probably need to know at least a little about PHP/MySQL and a LOT about HTML/CSS, as opposed to other CMS where this is all handled automatically by the CMS. However, the sacrifice of learning a little PHP and becoming an expert in CSS and HTML is very much worth the freedom that MODx affords.

MODx uses a visually apealling ajax-based document tree for logically sorting and editing site content and pages (as shown in the screenshot below). Pages can become top-level directories with other sub-pages and levels going as deep as you need, and this “heirarchy” logic is used dynamically throughout the site (breadcrumbs, menus, human-readable rewritten URLs, etc.); making the site totally scalable. For instance, when we release UltraEdit Linux (UEX), creating the content-portion for our site is as easy as duplicating a pre-existing “Product” subfolder and updating the page titles and content, since all of the existing subpages are copied with the parent.

Image of the backend of MODx

Like many other open-source CMS, MODx’s documentation is somewhat fragmented and getting answers can sometimes take some real digging, but the framework’s API is so intuitive that most developers who understand even a little PHP will master the system after just a few hours of playing in the code. MODx’s features are virtually limitless — “snippets” provide a way for you to store bits of PHP code that can be called with custom parameters from any page in the CMS, while “chunks” store static HTML that can also be called anywhere in the site. This makes updating information that is repeated throughout the site (such as a software version number or a release date) as simple as updating one single chunk on the back end. Also, Google- and human-friendly URLs are set up very easily.

However, my favorite feature of MODx has to be “template variables”; variables assigned to templates that are set and then included in the rendered template on a page-by-page basis. Further adding to the power of TVs is that they can include calls to chunks and snippets. This is why you see changing supplemental content in our right-hand column on our site, as opposed to previously where each page shared the same subcontent regardless of where you were on the site. Setting up a template variable is a very simple process that provides many different options for input type and values.

Image of template variables that can be configured in MODx

The power of MODx is truly outstanding — I could go on and on about what can be done with this CMS–er, CMF. MODx is perfect for small to large scale sites, corporate sites, community-based sites (the user management features are superb), bloggers, developers, and any web designer looking for a better way for your non-HTML savvy clients to login and manage site content.

The MODx user base is growing, and its developers are very active in the user forums and very receptive to all newcomers with basic questions (you won’t see any “RTFM” replies). In fact, MODx won the CMS Awards 07 prize for “Most Promising Open Source CMS” over other CMS such as TYPOlight, dotCMS and SilverStripe. I highly recommend giving MODx a look if you’re a web developer constantly struggling with rigid content management systems or if you’re just a “web 2.0” junkie always looking for new apps and technologies to streamline your workflow. A free demo is available at opensourcecms.com where you can log in to the back end and play with/uncover the power of MODx. Happy coding!