Eventually, I found some time to start developing and building a CMS for small Websites based upon my own Meta Framework "ixCMF", which I normally use for building web applications. Such applications very often contained CMS like administration elements, too, and of course Web generators to build defined areas of a web page automatically.
However, the features of the web page generators were most of the time secondary in comparison to the general application logic and not adapted to the special logic of a CMS. Furthermore, the Web generators very often produced contents for a very defined and rigid layout of only a part of the web page. The arrangement and positions of the displayed elements like lists, texts or pictures could only in some minor details be influenced by the end customer. This gave us the flexibility to incorporate of web applications like e.g. the presentation of a team and its members seamlessly into an existing web site. This has changed a bit as we had to cover more and more applications and to provide more degrees of freedom to influence the layout of the contents to be displayed.
So, now, I want to use the already existing variety of ixCMF PHP classes to build up a PHP and MySQL based, simple but flexible and dedicated "Web CMS". Its purpose shall be to arrange and maintain the contents of simple hierarchically related Web pages and connect it to definable menu points of menu blocks.
This is a funny endeavor which I always wanted to do but never succeeded due to time limitations.
As it is interesting for myself to see how much effort it takes to build a simple, but flexible CMS with ixCMF I shall start to follow up my efforts in this blog. So, this is going to become a kind of a diary for this special project ... well suited for a blog, as I think.
Introductory remarks and the project objective
Remember that ixCMF allows for a rather complete separation of HTML/CSS coding and PHP coding. This is made possible by the use of Pear ITX templates (ITX TPLs).
The HTML/CSS coding to define the most basic layout elements of a future customer website, whose detailed contents then shall be administered and arranged by the CMS user, can therefore be done by a HTML specialist and Tools outside Eclipse for PHP.
By "most basic" we really mean elementary aspects as
- page dimensions,
- the placement of major empty areas (DIVs) for page content and layouts later defined and delivered by the CMS user,
- fonts and colors
- and the position and definition of both main menu blocks and potential sub menu and even sub-sub menu blocks (separate or cascaded).
However, the real contents of each web page - i.e. the contents of a rather large CMS editable and maintainable area (a special DIV) - is later on controlled by the CMS user. In my opinion the end user should get control over e.g. the following elements:
- The definition of new menu points and corresponding web-pages, sub-pages and sub-sub-pages in a 4-fold hierarchy.
- 4 arrangeable and vertically extensible text blocks - each with a left/right positionable image. The logical and basic geometrical arrangement of the text blocks can be defined by choosing between a variety of so called CMS Templates (CMS TPLs based on ixCMF TPLs and their ITX logic), which shall take control over a large initally empty web page area. Each web page can thus be associated with a chosen variant of an ixCMF TPL defining a content presentation layout. Details of the presentation as e.g. the width of the text blocks should be changeable by the user.
- 4 additional and freely positionable text blocks with an image each. They allow for a circumvention of the geometric "limitations"" of the defined CMS TPL layout patterns.
- 4 freely positionable and automatically scalable images. The positioning can be done with respect to defined left upper or right bottom coordinate points of the CMS editable part of the page or relative to the position of a defined text block in a given ixCMF TPL. Note: The positions of the lower left corner of the editable area or the position of a text block are moving targets and depend of course strongly on the contents the user defines. The defined image distances to these reference points are, however, handled precisely by ixCMF.
- The vertical size of a web page: In my present approach I shall allow for vertically expandable web pages: The vertical size of a web page may therefore both depend on the basic web site layout and on the size and the position and kind of text and image contents defined and generated by the user. The page will adapt its size automatically.
This feature shall be compatible with the feature that a defined distance to the bottom of a page must be kept constant for some freely positionable elements. This is a bit of a CSS challenge as the bottom of a page may be a moving target through a page maintenance process - but it is solvable.
- The user shall get the possibility to insert a background image into the CMS editable area. The image can be softened or damped away by an additionally superpositioned layer whose transparency can be controlled.
- HTML experts can at any time define new CMS TPLs (based on extended ITX TPLs) for the arrangeable text blocks. The HTML developer only has to follow a set of rules for ITX TPL blocks
- People familiar with ixCMF should be able to easily include special applications - e.g. for job positions, catalog applications, seminars, events ... - into the website and its menus
Quite a list. But most of the topics I have already realized in some special web application. So, I hope, this is going to be more a gathering and integration project than a real "program from scratch" project.
In the next article I shall consider some aspects of the IDEs I am going to use for the project. I shall especially cover a combination of Eclipse for PHP on Linux systems with Adobes Dreamweaver on Windows systems. See:
The ixCMF CMS project – II – setting up the IDEs
Required time for some "theoretical" considerations about the features of my planned CMS: < 2 hrs.