Dynamische Templates
Namhafte Template-Engines wie Smarty oder Twig, besitzen eigene Templatesprachen, mit deren Hilfe viel Logik in Templates implementiert werden kann, dadurch entstehen sehr dynamische Layouts und Webseiten - das ist grundsätzlich gut. Dazu führen diese Vorlagen-Parser eine eigene Sprachsyntax ein, mit deren Hilfe ausgefeilte Logiken in die Layout implementiert werden können.
Trennung von Logik und Template
Dynamische Webseiten und Layouts sind auch mit CleanCMS möglich. Die präferierte Logik wird in CleanCMS jedoch nicht im Template untergebracht, sondern als separates Modul erstellt, welches über seinen Funktions-Namen in die betreffende Stelle des Templates eingehängt wird.
Vorteil: Eine der großen Kritiken an den eingangs erwähnten Template-Engines ist, die gefährliche Vermischung von harmlosem Template-Code und gefährlichem PHP-Code. Diese Vermischung kann unter Umständen zu Sicherheitsrisiken führen. Konzeptionell reiner ist daher, die konsequente Trennung von HTML-Vorlagen und Logik. Diese beiden Komponenten werden erst zum Zeitpunkt des Renderns zusammengeführt.
Der Modul Ansatz
Ein sehr gutes Beispiel für die Anwendung solch ausgelagerter Template-Logik, ist das Modul Articles-List.php
. Befindet sich der Leser in einem geöffneten Beitrag, ermittelt das Modul weitere Beiträge in der aktuellen Kategorie und listet diese in einem Seitenmenü auf.
$this->registerPlugin('article_list', function () {
$html = '';
$dir = dirname(UrlSanitizer::sanitize($_SERVER['REQUEST_URI']));
foreach (glob('content'.$dir.'/*.md') as $filename) {
if (!preg_match('/index[.]md/', $filename)) {
$model = new DefaultModel($dir, basename($filename, '.md'));
$html .= '<h2>';
$html .= '<a href="'.ltrim(basename($filename, '.md'), '//').'">';
$html .= $model->meta['title'];
$html .= '</a>';
$html .= '</h2>';
$html .= '<hr>';
$html .= '<p class="lead">'.$model->meta['description'].'</p>';
}
}
return $html;
});
Code des Moduls
Der oben gezeigte Code des Moduls ist überaus simpel und als reines PHP-Programm verfasst, das macht die spätere Wartung deutlich einfacher, da der Anwender keine spezielle Template-Syntax beherrschen muss.
Vorteil: Auch dies ist eine der vielen grundsätzlichen Kritiken an Template-Engines, denn der Anwender muss die zusätzliche Sprachsyntax des Template-Parsers beherrschen, die teilweise sehr abstrakt und propritäer ist (beispielsweise ist die Makro-Syntax von Twig nicht sehr eingängig und muss bei eventuellen Wartungsarbeiten permamnent in der Online-Doku nachgelsen werden). In CleanCMS muss der User keine separate Template-Sprache beherrschen und kann sich weiterhin voll auf seine PHP-Kenntnisse verlassen - das verringert den Aufwand erheblich.

Mein Name ist Oliver Lohse und ich bin seit etwa 41 Jahren als Programmierer in den Sprachen bzw. Markup- und Struktur-Dialekten Java, JEE, JavaScript, React, VAADIN, COBOL, PHP, Python, HTML, CSS, Json, YAML, SQL und XML tätig. In dieser Zeit konnte ich viele Aufgabenstellungen und Alphaprojekte, als Entwickler in der Versicherungswirtschaft, erfolgreich abschließen. Zudem bin Ich Buchautor und Betreiber bekannter Webseiten, im Bereich CMS-Entwicklung und Bildbearbeitung, mit etwa 1,2 Mio Lesern jährlich.