Basic functionality
Following the framework proposed by James Robertson5, any CMS should be divisible into four basic areas of functionality:
1. Creation: all the forms for entering information and the processes behind them, whether adding a news article, video, gallery or other content.
2. Management: all created information must be manageable: it must be possible to edit, delete or modify it. Some structural elements, text and pages appearing on the website must also be editable.
3. Publication: items must be publishable and unpublishable. CMSs may manage this by dates, editions or other criteria. Unpublished information is archived and remains available when needed.
4. Presentation: this refers to the framework and structure of the website in which content is placed: menus, links, advertisements and so on. A particular CMS may have separate mobile and desktop versions.
By programming language, most are written in PHP, although many use ASP, Java, .NET, Ruby, Perl or Python.
By licence, they can broadly be divided into open-source and proprietary products.
By purpose, there are CMSs for blogs, forums, publications, shops, social networks and other uses.
First, it is important to be clear about the differences between these two concepts.
A framework provides a foundation on which to build an application. Like a mechanic’s toolbox, it helps developers create applications by providing libraries, functions and other solutions within the development environment.
Frameworks provide ready-made functionality, but do not themselves provide a website. Some have evolved towards capabilities close to those of a CMS, although the concepts remain very different.
A CMS is more than a framework and is likely built on a bespoke one. A CMS could be described as an applied framework.
Some CMSs can themselves be used as frameworks because their well-defined interfaces allow programmers to build applications as extensions of the CMS.
As the internet has developed, site builders have appeared that make it quick and easy to create websites from styled templates for static content. In some cases, these could be considered CMSs, even if they do not use databases and offer only very simple content management.
CMSs have traditionally been associated with databases for persisting information. In addition to classifying data, they must allow it to be accessed freely. Many database engines are available, and the choice depends on the CMS using them.
Configuration files may sometimes be used to persist or share particular settings. Images and other visual resources are normally stored in the web directory.
Caching primarily saves server processing. Each page request triggers many operations: executing server scripts and their variables, functions and calls; accessing physical file-system resources; querying the database; allocating memory; and so on.
The principle is simple. A cache takes the result of the operations required to handle a request and stores it as a plain-text file in the file system. When the same request arrives again, it reuses the previous result, avoiding all that processing.
One feature all CMSs share is the use of templates or themes.
A template is the container in which content is rendered. Together, the template and content form the interface or response generated for a user’s request.
A template can accommodate content produced by the CMS.
Templates are associated with structure. Changing a template can therefore change the visual arrangement of content as well as its styling.
Themes are more limited: they affect styling without changing structure. With a theme, the visual organisation of content remains constant.