Content Management Systems
The question then arising, do I need a full blown Content Management System. In this context, and for a small site, probably not, however suppose you want anyone in the organisation, or even your intended audience, to be able to contribute to the site. It’s unlikely these contributors will have the necessary technical skills mentioned above, and so they must be presented with a user interface, that is simple, demanding no more skills perhaps than those needed for word processor.
Faced with this situation, most web developers will turn to CMS. Now in addition to the skills already mentioned, the web developers must now add, database skills and PHP. Now a clear distinction between, developers, authors, and casual users is being made and the software effectively provides two interfaces.
CMS is divided into two areas – the backend and the frontend. The frontend is the website that is produced by the CMS. It is visible by everyone out there on the web, however some content may require a visitor to login first. The administrative area of the website is called the backend. To access this, developers / authors and administrators must all login with Username and password.
The technical tools needed to build a CMS are often referred to as a technology stack. In Linux one such technology stack is called a LAMP server. I.e
- Linux operating system
- Apache server
- Msql database
- PHP server side programming language
There are many CMS systems, both commercial and Open Source, which can be used, ranging from the simple to the complex. Popular systems will work straight out of the box, but at some point they will require some customisation. The frontend will provide a choice of themes to choose from, aspects of which can be tweaked, to better suit your needs. This customisation can be taken a step further, by developing your own child theme. This allies you to override elements of the parent parent, so customisation my be more extensive.
Finally you may opt to build your own theme from scratch, or having sketch out what you want, or even mocked it up a a number of web pages, pass it to a developer.
The functionality of a CMS can also be extended, or customised with additional plugins. These may be developed by the core team who developed the core CMS, or can be provided by a third party. There are often a number of options to choose from, but you should always check to see how many other (active) users, have chosen to use a particular plugin.
How does it work
Back end, or server side processing.
To provide a consistent look and feel to the web pages, one or more templates are used. Collectively referred to as a theme. A template is nothing more than a web page, where common features have been extracted. The most obvious being the header and footers of the page. Instead of storing this code on every page, it can also be stored separately. Now when the page is requested, the PHP code as instructions to get the headers, footers, and (selected) content, put them all together, and then deliver the page to the users browser.
A Content Management System can be used to standardise this process and many different systems have evolved to fill this niche. Some are general purpose, leaving local developers to do any final customisation, or the CMS may be customised to meet a specific need. E.g. Schools, colleges and universities have similar requirements, so my opt for a CMS that better meets their particular needs. Most CMS providers offer much the same core functionality; then rely on separate modules (plug-in’s) to extend that, thus helping to minimise the amount of end user customisation needed.
When choosing a CMS, its important you look at the range of features offered, not just to meet immediate needs, but possible future needs as well. Plug-ins may be provided by both the core CMS provider, but by third parties as well. In the latter case, many may plugins may provide the same, or similar functionality.They may even rely on other plug-ins being installed as well.
The level of support for the various plug-ins by the community, the number of outstanding bug reports, are all things that need to be checked; especially if this is being done in a business context.
Into this mix, you might throw in frameworks. These provide additional pre built and stand alone capabilities, that can be either downloaded separated and incorporated into a web site, or they may be included as part of a particular CMS theme. While they may add additional tools to the developers armoury, they also add complexity.
With any software, a key consideration is maintenance, and the resources and skills needed to support it. Putting together a CMS solution from multiple sources, and having some overall form of version control,is a potential nightmare for the unwary. If the necessarily skills don’t exist in-house, then an organisation is usually left with little choice other than outsource a solution; it then hopefully becomes somebody else’s problem.
If moving from a small (custom) system, to a CMS, or even moving from one CMS to other, legacy data can be a big problem, depending on how long its been accumulated. Just keeping stuff up to date, requires resources, and should not be underestimated. You only have to look at the internet where there are probably more sites that are out of date, than those being actively maintained.
Fashions, and technology change, not may years ago, the web was the province of desktop and laptop computers. Then along can tablets and mobile phones. Depending on your target audience, a web site now needs to take all these various devices into account; unless perhaps your designing for an Intranet.
Static designs may longer work, and the techniques used to put a web page together may no longer be appropriate.The current flavour of the month is responsive, (or flexible) design. As with any large system, it has built in inertia, meaning the larger it is, generally the slower it is to adapt. CMS systems or no exception to this rule.
Do I need one?
As well as giving a brief overview of what a CMS system is, some of the attendant issues have also been covered, and which need to be considered very carefully, if contemplating this question. For a small web site, say less than 50 pages, the answer is probably no. If the site is projected to be significantly larger than this, then the answer maybe yes.
If the authors, or content providers, do not have basic HTML and CSS skills, then in much the same way as a CMS system can be divided into front-end and back-end, so to can developers. An author / front-end developer having these basic skills and can take raw materials and turn them into presentable web pages. In this scenario then the answer to the question is probably yes, there is however no one size fits all solution. Whichever path you choose, plan for some training.