Strukturtemplate ohne Code mit dem Smarty Template Parser

Erstellen Sie ein Webseite mit der Template-Engine Smarty ohne aufwändigen Programm Code. Ein trivialer Beitragsloop wiederholt sich in festen Strukturen.

Juli 5, 2023 - Lesezeit: 4 Minuten
  • Der Vorteil
  • index.php
  • config.conf
  • post.txt
  • render.php
  • Ziel dieses Ansatzes ist es die Template-Engine gleichförmig, homogen zu gestalten und komplexe Programmlogik zu entfernen. Die Arbeit der Template-Engine Smarty wird dabei auf immer wiederkehrende gleichartige Module verteilt.

    Im wesentlichen wird die eigentliche Arbeit des Templateparsers Smarty auf die fünf Module aufgeteilt.

    • index.php
    • render.php
    • template.html
    • post.txt
    • config.conf

    Der Ansatz ist wie folgt: jeder Post wird in ein eigenes Verzeichnis abgelegt, das den Namen des Beitrags trägt. In jedem dieser verschiedenen Verzeichnisse liegen immer die gleichen Module:

    • index.php
    • config.conf
    • post.txt

    Die Datei index.php bindet die eigentliche Smarty-Umgebung ein. Die Datei config.conf enthält Zusatzdaten - derzeit die Navigation zum übergeordneten Verzeichnis. Zu guter letzt, nimmt post.txt den Inhalt des Beitrags auf. Die Module besitzen immer den gleichen Inhalt, lediglich post.txt enthält unterschiedliche Beitragstexte - logisch.

    Der Vorteil

    Sie können den Content beliebig tief mit thematischen Unterordnern oder Kategorien schachteln, Sie müssen lediglich dafür sorgen, das der per URL gerufene Ordner diese drei Module enthält. Sie können demzufolge neue Ordner anlegen und kopieren diese Module einfach aus einem anderen Vorlage-Ordner dort hinen.

    index.php

    Die Datei index.php dient dazu das Script render.php zu laden und eine Path-Variable zu setzen. Das Script selbst ist recht übersichtlich:

    001  <?php
    002     $path = "";
    003     include $path.'render/render.php';
    004     // $path= dient dazu, das z.B. der CSS-Style aus jeder Ordnerstruktur 
    005     // geladen werden kann.
    006  ?>

    Die Variable $path wird vom render.php genutzt, um in den Templates den Pfad hoch zur root festzulegen, damit diese auch die CSS-Styles laden können. Folglich ist die Variable $path auf der Startseite leer, im ersten Unterordner "../", im zweiten Unterordner "../../", im dritten Unterordner "../../../" usw.

    Das ist im übrigen die einzige Anpassung die Sie vornehmen müssen, damit dieses Template-Modell funktioniert.

    config.conf

    Die Konfigurationsdatei nimmt Zusatzinformationen zum Post auf, die zunächst nichts mit dem Text zu tun haben, derzeit ist es die Navigation zum übergeordneten Verzeichnis.

    navigation = "<a href="http://cmsworkbench.de/index.php">« zurück</a>"

    Jede diese config.conf enthält diese HTML-Angabe und springt in der Verzeichnisstruktur eine Ebene nach oben. Der Inhalt der Templatevariablen wird in das Template gesetzt.

    post.txt

    Die Datei post.txt nimmt den eigentlichen Beitragstext auf und hat die folgende Struktur:

    Titel des Beitrags
    ~~~
    beitragsbild.jpg
    ~~~
    Den Anleser hier eintragen
    ~~~
    Der Haupt-Text Ihres Beitrags... beliebig viel Text.
    ~~~
    Name der zu ladenden Template-Datei
    ~~~
    Kategorie
    ~~~
    Name des Autor
    ~~~
    2020-06-01
    ~~~
    Schlagwort-1,Schlagwort-2, ...
    ~~~
    Meta-Beschreibung

    Der Beitragstext ist mit Delimittern ~~~ versehen, damit render.php die einzelnen Sektionen später an die richtigen Stellen des Templates kopieren kann.

    render.php

    Der Renderer dieser Template-Engine ist klassisch aufgebaut und enthält keinerlei Logik. Er sorgt dafür, das der Inhalt der Datei post.txt in die passenden Templatevariablen kopiert wird.

    001  <?php
    002      require_once($path.'libs/Smarty.class.php');  // $path-Variable + Verzeichnis
    003      $smarty               = new Smarty();
    004      $smarty->template_dir = $path.'templates';    // $path-Variable + Verzeichnis
    005      $smarty->compile_dir  = $path.'templates_c';  // $path-Variable + Verzeichnis
    006      $smarty->config_dir   = '.';                  // immer das Config-File im aktuellen Verzeichnis suchen
    007    
    008      $smarty->configLoad('config.conf');           // config.conf des aktuellen Verzeichnis laden
    009      $navigation = $smarty->getConfigVars('navigation');
    010
    011      $fileContent = file_get_contents ("post.txt");
    012      $textBausteine = explode("~~~", $fileContent);
    013
    014      $smarty->assign('path',            trim($path)); // $path-Variable auch in das Template damit CSS geladen wird
    015      $smarty->assign('title',           trim($textBausteine[0]));
    016      $smarty->assign('teaser',          trim($textBausteine[1]));
    017      $smarty->assign('headline',        trim($textBausteine[2]));
    018      $smarty->assign('content',         trim($textBausteine[3]));
    019      $smarty->assign('template',        trim($textBausteine[4]));
    020      $smarty->assign('categorie',       trim($textBausteine[5]));
    021      $smarty->assign('author',          trim($textBausteine[6]));
    022      $smarty->assign('date',            trim($textBausteine[7]));
    023      $smarty->assign('metakeywords',    trim($textBausteine[8]));
    024      $smarty->assign('metadescription', trim($textBausteine[9]));
    025      $smarty->assign('status',          trim($textBausteine[10]));
    026      $smarty->assign('navigation',      trim($navigation));
    027
    028      $smarty->display(trim($textBausteine[4]));
    029  ?>

    Sie können bereits die Variable $path erkennen, die eine Pfadangabe zum übergeordneten Verzeichnis darstellt. Diese ist erforderlich, damit der Parser immer seine benötigten Verzeichnisse, wie templates, finden kann. template-*.html

    Zum Schluss fehlt noch das Template selbst, das Smarty für die Darstellung nutzen soll. Alle Templates werden aus dem Verzeichnis templates bezogen (ich drucke den Code hier nicht ab, da bekannt sein sollte wie die Smarty-Templates funktionieren).

    Wie bereits im Beitrag erwähnt, der Ansatz ist simpel, denn alles wird mit gleichartigen Modulen identisch verarbeitet. Landingpages und Beiträge sind technisch betrachtet daher gleich, lediglich Landingpages enthalten statt des Beitragstextes ein individuelles Menü-Layout das Sie slebst mit Bootstrap-Mitteln frei anlegen können - schauen Sie sich bitte das Beispiel im Download genau an).

    Schlagworte:

    Beiträge in der Kategorie "Smarty":

    Erstellen Sie ein Webseite mit der Template-Engine Smarty ohne aufwändigen Programm Code. Ein trivialer Beitragsloop wiederholt sich in festen Strukturen.

    Werten Sie in eigenen Templates mit der Template-Engine Smarty, Variablen aus und steuern dadurch die individuelle Ausgabe des Content Ihrer Webseite.

    So verhindern Sie die Ausgabe von Warnungen und Meldungen in der Template Engine Smarty. Besonder hilfreich während der Entwicklung in kleinen Projekten.

    Lesen Sie mit der Template Engine Smarty die Konfigurationsdatei config/config.conf und werten individuelle Variablen für die Steuerung des Templates aus.

    Möchten Sie in Smarty Templates Bedingungen abfragen, dann können Sie den IF Befehl des Smarty Parsers nutzen, um die Ausgabe des Templates zu steuern.

    Der Programmcode wird in diesem Beitrag vom Text getrennt und es werden reine eigenständige Textbausteile als Flatfile-DB erzeugt die das Template einliest.

    Konvertierung der Texte und ersetzen von speziellen HTML Characters in Unicode unter Nutzung so genannter Modifikatoren bzw. Modifier im Templateparser Smarty

    Laden Sie mit der kostenlosen Template-Engine Smarty verschiedene Textbausteine aus einem Content Ordner und zeigen deren Inhalte auf der Webseite an.

    Legen Sie ein erstes sehr einfaches TPL Template für die Template-Engine Smarty an und lassen den Inhalt eines Artikels und Beitrags laden und rendern.

    Nachdem Sie die kostenlose Template-Engine Smarty herunter geladen haben, installieren Sie die Programme auf den Webserver und beginnen mit dem Templating.

    Die Template-Engine Smarty ist sehr beliebt für sehr sichere Webseiten. Dieser Workshop führt Sie in die Welt von Smarty ein und startet mit der Installation

    Kategorien

    Automad

    Das kostenlose Flat File CMS Automad bietet bereits nach der Installation auf dem Server das beste Layout unter allen CMS am Markt.

    Bludit

    Das kostenlose Flatfile CMS Bludit ist das beliebteste Content Management System, das dem großen WordPress sehr nahe kommt, jedoch deutlich mehr Sicherheit bietet.

    CMS

    In dieser Rubrik geht es um übergreifenden Themen aus dem Bereich der Content Management Systeme.

    Coast

    Coast ist ein CMS aus deutscher Feder und ist mit einem exzellenten HTML/PHP Frontend-Editor zu vergleichen, die Daten werden direkt in der HTML-Datei gespeichert.

    GetSimple

    Das kostenlose Content Management System GetSimple verspricht genau das, was der Name andeutet, ein stabiles Flat File CMS auf der Basis von XML-Dateien.

    GRAV

    Das kostenlose Content Management System GRAV gehört zu den komplexesten CMS, da es den größten Funktionsumfang mitbringt.

    Handlebars.JS

    Handlebars.js ist eine kostenlose JavaScript Template-Engine mit der einfache Webseiten oder Prototypen leicht und schnell erzeugt werden können.

    htaccess

    Die .htaccess ist die wohl wichtigste und mächtigste Datei, über die der Server seinen Umgang mit den Daten und Besuchern steuert.

    Java

    Java ist die strategische Programmiersprache für verteilte Anwendungen im Internet oder auch in der Client-Server Architektur und sogar auf dem Host.

    Monstra

    Das CMS Monstra ist ein überaus gelungenes und sauber entwickeltes CMS mit Admin-Backend und Flat File Datenbank.

    PHP

    PHP ist die strategische Programmiersprache des Internets, mit PHP geht alles und ohne PHP nichts! Allerdings ist PHP nicht auf lokalen Client-Umgebungen verbreitet (aber möglich).

    Pico

    Das CMS Pico ist derzeit das ausgereifteste und einfachste headless CMS für den Einsatz großer Mengen an MarkDown-Files (Content).

    Smarty

    Smarty ist eine Template-Engine auf Basis der Programmiersprache PHP und ist in der Lage HTML-Vorlagen (Templates) dynamisch mit Content zu versorgen.

    Typemill

    Typemill ist zunächst ein ganz normales Flat File CMS, entfaltet jedoch sein wahres Potenzial mit einigen besonderen Plugins, die es zum kraftvollen Publishing-Tool macht.

    WonderCMS

    WonderCMS ist das mit Abstand kleinste CMS das es derzeit kostenlos gibt. WonderCMS kommt mit einem PHP-Script und einer JSON-Datenbank aus und bietet ein Backend.

    WordPress

    Das datenbankbasierte Content Management System WordPress ist das beliebteste CMS und hält die meisten Installationen - ist allerdings auch das am meisten attackierte System.

    Derzeit sind noch keine passenden Beiträge vorhanden.