CMS architecture
For the last year i have tried a variety of different frameworks and Content Management Systems, based on different platforms and different scripting languages. I have, since then, returned to Typo3 because it offers a great deal of functionality, it is extensible and customizable (altough it has some drawbacks in the form of a steep learning curve – for developers and for content editors, and a complex (and maybe a bit bloated) backend design.
Today i want to get you through the basic functionality that a CMS has to offer, and how it should behave. Bear in mind that this is my personal opinion based on building and maintaining a site. This is greatly insipired by Typo3, but also on the Netlogiq CMS (asp.NET based in-house built and used cms solution) and various other …
Core Functionality
This is the bare minimum or the skeleton, that a CMS solution should have. It should meet the following criteria:
- be enough to support presentation sites
- extensible: have a plug-and-play system in place for extensions
- easy to create a site using it
- fully customizable front-end design
- little-to-none convetions for the front-end structure
- easy to manage content
1. Structure
Tree like structure. This is good because everyone is familiar with a folder-tree structure. Easy to grasp and to navigate. Page-based structure.
2. Content
Each page from the structure has regions and content. Each content element should be appointed to a region. A content element may be anything, from text, to an image, to a navigation element. And each content element needs to have the ability to cascade (be inherited by its ancestors).
3. Internationalisation
Typo3 based i18n and localisation tehniques.
- Define available languages on the root-level
- Create translated content based on the default language content
4. Template system
Some sort of marker-based template system, where markers and regions are linked togheter.
With this Core we can create most presentation sites.
For more functionlity we should apply to the extension system.
Extensions
An extension will at the most basic level add custom content types to the Pages. Examples of this could be:
- time based entries (news, blog etc)
- photo gallery
- forms
- etc
Of course there are other components that we have not touched, such as user management, caching etc
This post is just a reminder for me as I plan to build something like this with Django on top of GAE. I have something similar (but very, and i mean very basic on Django 1.0 and have used it for 2 sites), but i need a more simpler solution to typo3 for more simpler projects.
And GAE offers free hosting (for the types of sites that would be build with this CMS)