In this blog article I continue with my project to build a CMS based on ixCMF classes. For the first articles of this series see:
The ixCMF CMS project – I – some objectives
The ixCMF CMS project – II – setting up the IDEs
The ixCMF CMS project – III – the object hierarchy
After having defined the object hierarchy for the ixCMF based CMS application I now want to consider some aspects of the web page generation. First, we have to clarify the connection between our assumed ixCMF object classes and related web pages which have to be generated by proper PHP generator programs.
Web page counterparts to PAGE-, SPAGE-, SSPAGE-objects
In the case of our planned CMS, object instances of the ixCMF object classes for PAGEs, SPAGEs and SSPAGEs must and shall define well structured web pages ( - besides other things ... ). Note, that because each ixCMF object is identified by its ixCMF-"snr"-key the same is true for the associated web page.
Such web pages will of course be generated by standard ixCMF generator programs adapted and extended for the purposes of our CMS application. The web page content is - as in all other ixCMF applications - created according to object properties saved in specific database fields.
Eventually, the CMS must provide two basic features:
- an UI for the maintenance of objects, their contents and their relations via a general ixCMF user interface. Such an interface must also be capable to generate new objects as instances of their ixCMF object classes and handle such objects according to their SCHEMA definitions.
- generator programs for the automatic generation of web pages for related PAGE, SPAGE, SSPAGE objects on basis of SCHEMA definitions, the user defined object properties and defined generator rules.
These 2 objectives just reflect a special application of what ixCMF provides at its core:
- Define object classes at different levels of a MD hierarchy,
- define associated Schemata for the object contents and respective database table fields,
- use standardized web generator programs that provide a standard ixCMF User Interface for the maintenance of objects, their data and relations
- AND last but not least build suitable web page generators for object contents that shall be displayed in a defined way on a web page based on ITX templates and ITX blocks.
ixCMF is a simple machinery for maintaining object hierarchies in databases and for defining respective web generators on the basis of methods of appropriate base classes. Which, by chance, provide already most of the basic ingredients required for a small CMS.
ixCMF Template Control Objects
Remember that in ixCMF web pages are created and controlled by so called "TPL Control Objects" (which are derived from a variety of suitable ixCMF base classes). Such TPL Control Objects are the "heart" of the ixCMF web page generator programs.
A TPL Control Object Class
- can be defined, extended and adapted individually for a specific ixCMF object class and for its related special ITX Templates - in the CMS case for the PAGE, SPAGE, SSPAGE object classes and associated ITX TPLs
- or it may follow rather simple and general standard generator rules.
In the past the first point allowed for the creation of special and flexible web applications which could seamlessly be integrated into existing web sites of our customers. In the case of our planned CMS the Control Object Classes must, however, be capable to generate complete web pages with user arranged text fields and images AND, of course, link menus from basic ITX templates.
Web page generation for and from ixCMF objects
Thus, the web page generation in our future CMS will be performed by special TPL Control Objects for PAGE, SPAGE, SSPAGE objects. The web page is generated
- according to a defined Schema for each of our ixCMF object classes (and dependent Schemata of related objects of the MD hierarchy)
- according to standard rules and methods for the transformation of different special content field types of ixCMF object classes
- according to geometrical arrangement rules of content blocks on a web page given by the user's choice of a predefined CMS Template (see below)
- according to the specific contents of the defined "fields" of a distinct PAGE, SPAGE or SSPAGE object - identified by its ixCMF "snr" key
- AND - and this is typical for a CMS - according to rules for the generation of HMENU menus and PAGE relates sub menus inside a web page with links to other web pages associated with other objects of and within our MD hierarchy.
In any case: In our planned CMS any specific PAGE, SPAGE, SSPAGE object will define an associated well structured web page.
So, one of the more important tasks for the setup of our CMS will be to define rather general CMS web page generators in form of TPL Control Object Classes for both PAGE, SPAGE and SSPAGE objects. Which is an easy task in so far as we have used similar generators before for specialized web applications.
Arrangement of text and image contents
The arrangement of web page content in predefined ways is nothing profoundly new for ixCMF - we have realized similar things before in special web applications for customers. The only difference here is the broader and more general range of text and image content objects and their geometrical placement on the aspired web page partially according to geometrical arrangement rules and partially in free way at user defined coordinates.
For the end user the arrangement of text blocks etc. will therefore partially be ruled by the choice between several offered "CMS Templates" [CMS TPLs] which provide certain predefined geometrical structures of web page contents. A specific predefined CMS Template may e.g. arrange 4 text blocks of variable length (adapted to the text filled in) in such a way that a two column page layout is created where the width of each column is defined by the user as a percentage of the available page area.
One or several predefined ITX templates must therefore work as ixCMF Meta Templates for an extendable variety of "CMS Templates" provided for and to the end user. Nothing really new - but there is still work to be done as each of the aspired CMS Template types must get a proper ITX basis. My approach will be to comprise all reasonable geometrical arrangement in just one ITX TPL with just one associated Control Class that can distinguish between several geometrical layouts and fill appropriate ITX blocks and HTML/CSS definitions.
The end user only chooses between "CMS TPLs" and sets additional parameters - the ixCMF ITX meta templates and their block structure lying behind will be completely transparent for the CMS user. All CMS templates will additionally include the possibility to place some text blocks and images freely at user chosen coordinates. This aspect has already been covered to a certain degree in other ixCMF based web applications.
The choice of a specific CMS TPL for a PAGE, SPAGE or SSPAGE web page is of course saved in a special property of the respective ixCMF object.
Web page links
A typical ixCMF web application defines a web generator for each of the ixCMF object classes. This includes cases where certain objects combine and load other objects of the same MD hierarchy or of external MD hierarchies.
Therefore, in our planned ixCMF based CMS, a menu point represents a link to the URL of a (pretty standardized) PHP web page generator program for each of the ixCMF object classes PAGE, SPAGE, SSPAGE plus an object identifier. A specific object instance of these classes is actually identified by GET/POST parameters attached to the generator URL - among others the most important parameter will be its ixCMF-"snr".
The generation of main menus with links to web pages associated with PAGE objects
Something really new for ixCMF is the generation of main menus which contain links to major web pages of a whole site. More precise: Main menus with links to web pages associated with PAGE objects. Such main menus have to be generated on all web pages of a specific site to be maintained by our CMS.
The main menu structure normally is part of the layout definition of the web pages of a site. That means that we must find a way to generate "main menus" on all ITX templates for PAGE, SPAGE and SSPAGES in a consistent way. The menus will correspond to ITX blocks which contain repeatable blocks for the menu points.
Hovering over main menu points may in addition lead to the display of sub-menus with links to dependent sub-pages. So, the maintenance and generation of main menus is something, for which ixCMF and its generator classes must be equipped with new methods.
Menus with links to web pages for SPAGE and SSPAGE objects
On the web pages created for either PAGES, SPAGES and SSPAGES there may appear distinct or cascaded sub-menus containing links to SPAGES and SSPAGES which are associated with a given PAGE object. Such menus also have to be created and based on special suitable ITX blocks. Methods to create lists of SPAGE and SSPAGE objects have therefore to be provided. Note, that in contrast to the contents of the main menus the contents of SPAGE/SSPAGE menus is dependent on the specific PAGE or SPAGE chosen by the web page visitor.
In the next contribution I shall have a look at the ITX block structures for main and sub menus.