Verzeichnisse
Die Verzeichnisstruktur eines CMS ist von entscheidender Wichtigkeit, damit man weiss wo man was ablegen oder wo man etwas ändern muss. Darum werden hier die ZMS Verzeichnisse einzeln vorgestellt. Zuerst aber einen Überblick über die vorhandenen Verzeichnisse:

Verzeichnisstruktur des ZMS
htdocs
Das Verzeichnis htdocs ist das Grundverzeichnis (root) des ZMS. Alle für den Betrieb benötigten Dateien liegen in diesem Verzeichnis.
htdocs/code
Im code Verzeichnis sind alle PHP Quelltexte abgelegt. Dies sind die Basiskomponenten des ZMS, PHP Bibliotheken (wie zum Beispiel der HTML Purifier) und die projektspezifischen Quelltexte.
htdocs/code/featurestyles
Hier liegen die Quelltexte der Featurestyles, die sich selber darstellen können. Pro Featurestyle wird ein Ordner mit dem Namen des Featurestyles angelegt, in dem der Controller, das Frontend und allenfalls der Service des Featurestyles liegen. Gemeinsam genutzte Teile (z.B. ein allgemeiner Service) der Featurestyles sollten im code/inc/custom abgespeichert sein (siehe unten).
htdocs/code/inc
Im inc Verzeichnis liegen in Unterverzeichnissen alle Includes, die vom ZMS eingebunden werden. Direkt im inc liegt die Grundkonfiguration des ZMS (siehe Dateien).
htdocs/code/inc/admin
Hier liegen die Klassen für den Adminbereich.
htdocs/code/inc/base
Im base liegen die Basisklassen des ZMS, welche im Front- und Backend benötigt werden.
htdocs/code/inc/custom
Im custom können projektspezifische Klassen und Hilfsdateien abgelegt werden. Falls notwendig können hier auch Unterordner angelegt werden.
htdocs/code/inc/external
Im external liegen wie der Name schon sagt externe PHP Komponenten. Falls für das Projekt spezielle PHP Libraries benötigt werden, sollten diese hier abgelegt werden.
htdocs/code/inc/frontend
Im Verzeichnis frontend sind die Basisklassen für die MVC (Model / View / Controller) Implementierung des Frontends gespeichert.
htdocs/code/inc/includelist
In diesem Verzeichnis werden sogenannte Includelisten abgelegt. Verschiedene Listen dienen dazu nur die notwendigen Quelltexte zu inkludieren.
htdocs/code/inc/modules
Die Module des ZMS in einem jeweiligen Unterordner abgespeichert.
htdocs/code/inc/util
Hilfsklassen des ZMS wie zum Beispiel Filter, Mail, etc.
htdocs/code/pages
Hier werden eigenständige Seiten abgelegt, die nicht aus einzelenen Features zusammengebaut werden. In einem Unterordner admin sind die Seiten des Adminbereichs abgelegt.
htdocs/code/pagestyles
Speicherort für die Seitenvorlagen (Templates). In einem Unterordner admin sind die Seitenvorlagen des Adminbereichs abgelegt.
htdocs/css
Hier sollten die projektspezifischen Stylesheets abgelegt werden. In einem Unterordner admin sind die Stylesheets für den Adminbereich gespeichert.
htdocs/images
Hier sollten alle statischen Bilder platziert werden (Designelemente, Logos, etc.). In einem Unterordner admin sind die Bilder für den Adminbereich gespeichert.
htdocs/javascript
Speicherort für alle Javascript Dateien. Javascript Libraries (z.B. jQuery) sollten m Unterordner lib abgelegt werden. Im Unterordner admin sind die Javascripts für den Adminbereich abgelegt.
htdocs/media_features
Hier werden vom ZMS verwaltete Dateien (Bilder, PDF, etc.) gespeichert. Dieser Ordner enthält somit projektspezifische und dynamische Daten. Er sollte nicht in der Versionverwaltung geführt werden.
htdocs/protected
In diesem Ordner werden schützenswerte Daten abgelegt. Der Ordner muss, sofern er überhaupt im Livebetrieb vorhanden sein soll, geschützt werden (am einfachsten mit einem .htaccess).
htdocs/protected/logs
Hier landen das ZMS eigenen Logdateien zu den Aufrufen von Features und Pages.
htdocs/protected/scripts
Hilfsskripte zur Einrichtung des ZMS wie zum Beispiel das Empty-DB Skript.
htdocs/test
Testskripts zum testen des ZMS. Dieser Ordner sollte nie auf ein Livesystem kopiert werden.
Dateien
In diesem Abschnitt werden die wichtigsten Dateien des ZMS vorgestellt.
htdocs/index.php
Die Indexdatei des ZMS. In ihr ist im Normalfall nur ein Include des page.php. Hier könnten aber einfach Splashscreens oder andere Spezialitäten (z.B. Loadbalancing) eingebaut werden.
htdocs/page.php
Die eigentliche Hauptdatei des ZMS. Jede Seite des ZMS (Frontend und Backend!) läuft über das page.php. Sollte es notwendig sein können hier Dinge wie z.B. URL-Rewriting, Frontend-Userprüfung, etc. zentral eingebaut werden.
htdocs/code/inc/global.php
Im global.php werden die globalen Einstellungen des ZMS gespeichert. Insbesondere sind dies: Version des ZMS, Datenbankverbindung, Sprachen der Seite, Startseite und Zeitzone.
htdocs/code/inc/settings.php
Das settings.php beinhaltet alle Pfadangaben und die Tabellennamen der Datenbank. Im Normallfall sollten hier keine Änderungen nötig sein. Für spezielle Anwendungen (z.B. mehrere Mandanten) kann man hier Datenbank und Pfade projektspezifisch anpassen.
htdocs/code/inc/includelist/standard.php
Eine Liste der benötigten Includes. Falls dies auf unterschiedlichen Seiten verschieden ist, kann hier eine entsprechende Unterscheidung eingebaut werden.
htdocs/code/pages/admin/admin_main.php
Die Startseite des Adminbereich. Eigentlich ist diese Seite nur eine Linksammlung zu den verschiedenen Editierfrontends der Inhalte. Als Administrator sieht man hier noch ein Dropdown mit welchem man alle Featurestyles direkt anspringen kann.
htdocs/code/pagestyles/standard.php
Dies ist der "normale" Seitenstil (Template). Es sollte ein vollständiges HTML-Gerüst und mindest ein Mechanismus zum Anzeigen der Inhalte (z.B. über ein Arrangement) enthalten sein.
htdocs/code/pagestyles/standard_preview.php
Der Seitenstil für die Vorschau im Adminbereich. Er sollte möglichst wenig beinhalten (Anzeigen eines Features) muss aber auch ein komplettes HTML-Gerüst ausgeben.