Logiklose Templates


Die entwickelte Template-Engine ist logiklos und fördert die Performance und Handhabung durch den User, dennoch können sehr dynamische Templates entwickelt werden.

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.


29.12.2024 Oliver Lohse

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.

Weitere Artikel

Demo Plugin 'lower_case'


Das Beispiel-Plugin verdeutlicht die Arbeitsweise von Plugins in CleanCMS, anhand der Umwandlung von Content in lowercase bzw. Kleinschrift.

Logiklose Templates


Die entwickelte Template-Engine ist logiklos und fördert die Performance und Handhabung durch den User, dennoch können sehr dynamische Templates entwickelt werden.

Plugin Syntax


Für die Erstellung individueller Funktionen, Erweiterungen und Eigenschaften mittels Plugins, ist die folgende Plugin-Syntax notwendig.

PreFilter Plugin 'include'


Die Verwendung von so genannten PreFiltern hilft, der Template-Engine weitere includierte Templates aufzulösen, da sie vor dem Rendering ausgeführt werden.

Der RateLimiter


Der RateLimiter hat in CleanCMS die Aufgabe, die Frequenz der Zugriffe pro Zeiteinheit zu verlangsamen und Bots oder Hacker zu blockieren.

Shortcodes mit RegEx


Shortcodes bringen noch mehr Flexibilität in Templates und den Beitrags-Content. Shortcodes können häufig benötigte Phrasen, Bausteine und JavaScripte ersetzen.

Impressum


Diese Webseite ist eine reine Projekt- und Entwickler-Seite rund um das Content Management System CleanCMS.

Datenschutz


Die Webseite CleanCMS verwendet keinerlei Tracking oder andere Speichermechanismen, um Rückschlüsse auf Leserverhalten oder IP Adresse zu erhalten.

Kontakt


Kontakt@Oliver-Lohse.de

supportet by: CMSWorkbench - FlightCMS - SmartyCMS - safeCMS - smallCMS - yamlCMS - GIMP Handbuch - Oliver Lohse