In this article we will look at the key elements of a CMS, what they do, and decide on what functionality is going to be delivered in the first iteration of the application.
Key Elements
At the core of any CMS there are four types of element – Sections, Pages, Content and Media. The purpose of a CMS is to allow the user to manage and deliver their content in an easy, structured format.
Section
Sections are used to categorise pages into logical areas and to provide primary and secondary navigational structures. For example “Events” and “News” could both be classed as sections as they are logical locations for a visitor of the site to access news and event pages.
Page
Pages are containers for content; they are the main element of delivery used to layout and display content to the visitor. For example on an “About Us” page, the page element would be used to display some form of text and image based content with information relating to the website and who runs it.
Content<T>
Content elements are, in my opinion, containers for information. These elements are actually what hold the text and image/file references that the user enters into the CMS.
A page may have multiple content elements contained within it, allowing a more finely grained customisation of how the delivery mechanism of the CMS works. For example, a page could contain 3 different content elements (text, photo gallery, text) in an order the user can decide.
Media
Media elements are things like PDF files, images, audio files, Word documents etc. They should be stored in a logical way so that they can be accessed and used anywhere within the site via the CMS administration. For example the company’s logo; the user should only need upload once and be able to use it on any page of the website without having to re-upload.
Iteration 1 Functionality
In the first iteration of this application I want to deliver a very basic working CMS that will allow the creation of top level sections with child pages and textual content (including the ability to insert images).
This way I should be able to get the core concepts and development decisions that I go through when building an application like this, and also enable me to deliver this how to series in smaller manageable chunks of information, code samples and screen casts.
Ninja