Keep it Simple

KISS

[php snippet=1]

Have you ever had the need to produce a web site that needed dynamic CMS features and capabilities but felt that using one of the usual suspects (Drupal, Joomla!, WordPress, etc.) was the equivalent of using a sledgehammer to kill a fly?

That’s certainly the feeling I had when finally getting around to refactoring a small site of mine that has been on the Internet since 1997.  There had been numerous updates and tweaks made to the site over the years, but it was still based on static html pages and a bunch of customized (and poorly organized) javascripts.  Adding or modifying content was a manual process.

I had almost talked myself into using WordPress, as all I really needed was the framework and the equivalent of the WordPress Page content type.  But, at the last moment, I stumbled upon a lightweight CMS called GetSimple.  It is advertised as “The Simplest Content Management System Ever” and appeared to have the basic features and capabilities I was looking for.  I downloaded a copy and installed it in a subdirectory off of my web server’s root.

Next came the configuration, which was a simple one-page fill-in-the-forms exercise.  so far, so good.

I then did my typical thing, which is to pretend that I am all knowing and proceed without bothering to read the documentation.  The first order of business was to develop a theme for the site.  I did this by using GetSimple’s default theme as a learning tool and modifying it to meet my needs.  GetSimple themes are similar to those used in Drupal and WordPress, i.e., they use PHP function calls to manage and provide the raw content, along with xHTML statements and cascading style sheets (CSS) to manage the content layout and presentation. Here’s an example extracted from the default template.php file:

<div id="bodycontent">
    <div class="post">
        <h1><?php get_page_title(); ?></h1> 
    <div class="postcontent">
        <?php get_page_content(); ?>
    </div>
</div>

In GetSimple templates, breadcrumbs, sidebars and other like constructs are called components.  They are generated by the get_component() function as shown in the following example.

<?php get_component('sidebar'); ?>

Now that I had become an “expert” GetSimple theme designer, the next step was to generate some data.  GetSimple has only one content type and it is aptly named “Page.”  But it has the ability to assign a different template to each page, so for all practical purposes, one can generate a number of different content types by developping different templates.  As seen in the example below, there are a number of other options associated with pages.  Most are typical of the options found in many other CMSs.

GetSimple differs from a number of today’s open source CMSs in that it does not use Mysql and/or PostgreSQL as its DBMS.  Instead it stores database entries as XML-formatted flat files in the data subdirectory of the GetSimple root. The example shown below is the XML file for a Contact Us page based on a template named bbcontact.php.

<?xml version="1.0" encoding="UTF-8"?>
<item>
<pubDate>Sun, 21 Feb 2010 09:25:34 -0500</pubDate>
<title><![CDATA[Contact HR's Big Box]]></title>
<url><![CDATA[contact-hrs-big-box]]></url>
<meta></meta>
<metad></metad>
<menu><![CDATA[Contact Us]]></menu>
<menuOrder><![CDATA[5]]></menuOrder>
<menuStatus><![CDATA[Y]]></menuStatus>
<template><![CDATA[bbcontact.php]]></template>
<parent></parent>
<content></content>
<private></private>
</item>

That’s about it.  I’m not going to go into any more detail here but will mention that GetSimple capabilities also also include friendly URLs, WYSIWYG editing, file uploading, automatic page backup, and scheduled events via cron.  As of the latest release, it also supports plugins, but there are not very many available at this time.

In conclusion, I found GetSimple to have an almost flat learning curve, a simple and easy to understand Administrative User Interface (UI) and more than adequate features and capabilities to support my needs for this particular site. I have no real basis for determining how scalable GetSimple is, but I would expect that it would be more than capable for use as a platform for a small site with basic content management needs.