May 18, 2011

Extending your CMS

Extending the CMS

The majority of content management systems have increasing extendability, meaning you can enhance the original functionality already native to the system even further to match your online solution. This is usually achieved through the use of three concepts: plugins, modules and API’s. What they mean and do slightly vary from system to system but overall:


  • Can be used to add all kinds of functionality to a CMS, from post to twitter plugins, to content creation kits the possibilities are endless to the amount of them you can download and install into your CMS’s.


  • Usually extend the core functionality of the CMS to help achieve a specific goal but not required for all projects. For Example, site-wide searching, forums or e-commerce functionality could be separated into individual modules which could be installed as required. Usually CMS providers use this approach and offer first-party modules that integrate perfectly into the system. Third-party modules are also an option as well usually.

API’s (Application Programming Interfaces)

  • Enable you to access the data of a service you require to create your own apps, module or plugin. A good example is Shopify (mentioned in The CMS Uber Guide: Hosted) and it’s app store. Take a look at what people are making that extends Shopify and that is a good indication of the types of data you can manipulate using a CMS’s API.

Template Tags vs. Server Language

All modern CMS’s support templates to some capacity. A “template” file contains the required HTML/CSS needed to render a website from server side languages to give you something to visually see (your website). To make a template display your data from the CMS, usually you’re required to add CMS specific code to the template files. This code can very from system to system. One of the Paid systems ExpressionEngine (talked about in The CMS Uber Guide: Licensed) uses a proprietary tag system. For EE, tags in this system to display a blog post look like this:

{exp:channel:entries channel="blog"}
{date format="%F %j, %Y"}

A little different that what I’m personally used too, but it’s very clean, semantic and doesn’t take too long to pick up. Other systems, for example WordPress (what powers this blog!), use a diatribe of PHP functions to do the same job of displaying a post:

<?php if ( have_posts() ): while ( have_posts() ): the_post(); ?>
<h1><?php the_title(); ?><h1?>
<?php the_content(); ?>
<?php the_time('F j, Y') ?>
<?php endwhile; endif; ?>

This is what you end up with to display a single posting. Personally, I’m very familiar with WordPress and don’t mind working with server languages like PHP, Perl or Python. But Tag systems like ExpressionEngine above can be easier to work with if you’re not familiar with server languages. They also make your template files neater and easier to read for humans. The Syntax of Tags however vary from system to system. So memorizing all the Tags for ExpressionEngine only helps you with working in ExpressionEngine. Where-as learning a server language will help you no matter which system you use as long as its utilizing the same language.


Leave A Comment

Leave a Reply