Logo

Ein Heredoc-Parser und Mini CMS mit PHP zum Templating erstellt


Dieser Beitrag zeigt einen Heredoc Template Parser und mini CMS, erstellt in PHP, unter Nutzung der Heredoc-Syntax. Content, Template und Parser in einer Datei.

Sabrent ext.Festplattengehäuse

Sabrent ext.Festplattengehäuse - HIGH SPEED Das SABRENT externe Festplatte Gehäuse unterstützt UASP, deshalb kann das Gehäuse Ihnen eine außergewöhlich hohe Übertragungsrate von bis zu 5 Gbps für den Datentransfer bieten! Damit lassen sich HD Filme, Music und data in nur Sekunden transferieren. (Abwärtskompatibel mit USB 2.0 oder 1.1) Hinweis

kaufen...
Automad Bludit Coast GetSimple GRAV Handlebars Java PHP Pico Smarty Templating Typemill WonderCMS WordPress yamlCMS

Was ist Heredoc

Ein Heredoc, auch here document (von englisch, wörtlich hier dokument) genannt, ist ein Sprachkonzept der Informatik zur Spezifikation eines Zeichenfolgenliterals in Kommandozeileninterpretern wie beispielsweise der bash, Windows PowerShell und der Bourne-Shell sowie in Programmiersprachen wie etwa Perl, PHP, Python und Ruby. Der Bezeichnung entsprechend dienen Heredocs zur Definition von Textabschnitten. Im Unterschied zu herkömmlichen Stringdefinitionen werden enthaltene Zeilenumbrüche sowie Einzüge und viele Sonderzeichen im Text bewahrt. Einige Sprachen ermöglichen auch die Interpolation von Variablen oder auch Programmcode innerhalb der Zeichenfolge.

Der Content

Der serielle Content unterteilt in einzelne Sektionen die der Reihe nach vom Parser in die {#}-Tokens des Templates eingesetzt werden. Die Bereiche des Contents werden mit Hilfe sonst unbenutzer Zeichenkombinationen unterteilt, etwa so:

$data = <<<EOD
Titel 1
---
Das ist der Text zu Titel 1
---
Titel 2
---
Das ist der zweite Text zum zweiten Titel
...
...
EOD;

Das HTML-Template

Das vollständige HTML-Template ist mit {#}-Token angereichert, an den Stellen, an denen Ersetzungen aus dem Content in das Template erfolgen sollen, etwa so:

...
<h1>{#}</h1>
<p class="lead">{#}</p>
...

Alle mit {#} gekennzeichneten Stellen, werden vom Parser mit je einem Baustein aus dem Content-Block ersetzt. Für das Template ist es nicht die Tokens, wie in anderen Parsern erforderlich, zu benennen.

Der Parser

Der Parser des kleinen Heredoc CMS übernimmt die Aufgabe den Content in kleine Häppchen aufzuteilen (explode), die nicht nummerierten {#}-Tokens in nummerierte Tokens umzuwandeln und dann den Text mittels str_replace() im Template zu ersetzen.

...
$data                  = explode("---", trim($data));   // teilt den Content in einzelne Blöcke auf
$template              = explode('{#}', $template);     // zerlegt das Template anhand der {#}-Tokens
$token_count           = 0;                             // zählt die {#}-Tokens
$template_order        = '';                            // nimmt das neue Template mit {#1}, {#2}... auf
$template_target_array = array();                       // nimmt das Ziel-Array {#1}, {#2},... auf

foreach ($template as $value) {
    $template_order .= $value.'{#'.$token_count.'}';          // konkatiniert string{#1}string{#2}string...
    $template_target_array[] = '{#'.$token_count.'}';         // erzeugt Array Inhalte {#1}, {#2},...
    $token_count = $token_count+1;
}

$template = str_replace($template_target_array, $data, $template_order);
echo $template;
...

Der vollständige Code

Sie sehen unten den vollständigen CMS und PHP-Template Parser in Heredoc-Syntax. Zu optisch schöneren Darstellung, habe ich das CSS-Framework Bootstrap in Zeile 042 eingehängt.

001  <?php
002  
003  //-----------------------------------------------------------------------------
004  // Der serielle Content unterteilt in einzelne  Sektionen die der Reihe nach in 
005  // die {#}-Tokens des Templates eingesetzt werden
006  //-----------------------------------------------------------------------------
007  
008  $data = <<<EOD
009  HeredocParser - home
010  ---
011  HeredocParser
012  ---
013  Eigenständig lauffähiger Heredoc-Template Parser in PHP
014  ---
015  Content
016  ---
017  Der Content ist Bestandteil der PHP-Datei und liegt in der Heredoc-Syntax vor.
018  Der Content wird dabei mit drei Bindestrichen in Blöcke unterteilt. Alternativ
019  können andere Platzhalter genutzt werden.
020  ---
021  HTML Template
022  ---
023  Das HTML-Template befindet sich im zweiten Teil der PHP-Datei ebenfalls in der
024  Heredoc Syntax verfasst. Das Template ist mit {#} Tokens angereichert, in denen
025  der spätere Content eingesetzt wird.
026  ---
027  Tokens
028  ---
029  Die {#}-Tokens stellen alle Stellen im Template dar, in denen Content der Reihe
030  nach eingesetzt werden soll. Der Parser wandelt alle normalen {#}-Tokens in
031  nummerierte {#1}, {#2},... um.
032  EOD;
033  
034  //-----------------------------------------------------------------------------
035  // Das vollständige HTML-Template mit den {#}-Token
036  //-----------------------------------------------------------------------------
037  
038  $template = <<<EOD
039  <!doctype html>
040  <html lang="de">
041      <head>
042          <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
043          <title>{#}</title>
044      </head>
045      <body>
046  
047          <div class="container-fluid py-5 bg-secondary text-light shadow">
048              <div class="container">
049                  <h1>{#}</h1>
050                  <p class="lead">{#}</p>
051              </div>
052          </div>
053  
054          <div class="container py-5">
055              <div class="row">
056                  <div class="col-sm"> <h2>{#}</h2> <p>{#}</p> </div>
057                  <div class="col-sm"> <h2>{#}</h2> <p>{#}</p> </div>
058                  <div class="col-sm"> <h2>{#}</h2> <p>{#}</p> </div>
059              </div>
060              <div class="row">
061                  <div class="col-sm"> <h2>{#}</h2> <p>{#}</p> </div>
062                  <div class="col-sm"> <h2>{#}</h2> <p>{#}</p> </div>
063                  <div class="col-sm"> <h2>{#}</h2> <p>{#}</p> </div>
064              </div>
065          </div>
066  
067      </body>
068  </html>
069  EOD;
070  
071  //-----------------------------------------------------------------------------
072  // Der Parser und Renderer ersetzt alle {#}-Tokens durch die nummerierten {#1}, 
073  // {#2},... Tokens und fügt den Content der Reihe nach in jeden Token ein.
074  //-----------------------------------------------------------------------------
075  
076  $data                  = explode("---", trim($data));   // teilt den Content in einzelne Blöcke auf
077  $template              = explode('{#}', $template);     // zerlegt das Template anhand der {#}-Tokens
078  $token_count           = 0;                             // zählt die {#}-Tokens
079  $template_order        = '';                            // nimmt das neue Template mit {#1}, {#2}... auf
080  $template_target_array = array();                       // nimmt das Ziel-Array {#1}, {#2},... auf
081  
082  foreach ($template as $value) {
083      $template_order .= $value.'{#'.$token_count.'}';          // konkatiniert string{#1}string{#2}string...
084      $template_target_array[] = '{#'.$token_count.'}';         // erzeugt Array Inhalte {#1}, {#2},...
085      $token_count = $token_count+1;
086  }
087  
088  $template = str_replace($template_target_array, $data, $template_order);
089  echo $template;
090  ?>

Die index.php kann wie gewohnt auf dem Webserver abgelegt und via URL gestartet werden. Sie erhalten die Anzeige eine Webseite mit Header und drei Spalten-Artikel.

Weiterführende Informationen

Dieser kleinste Heredoc Template-Parser und PHP CMS ist ideal für kleine und schnelle Interventionen oder das Prototyping im Bereich Webdesign. Alles liegt innerhalb einer transportablen und kompakten Datei und kann easy angepasst werden. Das Templating ist überaus simpel, da auf konkrete Template-Token, wie sie beispielsweise aus Twig oder Smarty bekannt sind, verzichtet werden kann. Zudem ist dieser Parser überaus sicher!

Das Skript erhebt nicht den Anspruch ein vollständiger und ausgereifter CMS Parser zu sein, es soll lediglich einige Sachverhalte darstellen und Denkanstöße liefern - mehr nicht.

Passend:


Kleinster PHP Template Parser mit Heredoc Syntax der Welt

Das ist die kleinste PHP-Template-Engine bzw der kleinste Template-Parser in PHP, der mit Heredoc Syntax arbeitet. Die Heredoc Syntax ist ideal für kleine Prototypen.

Aktivieren Sie den Markdown Parser im CMS Bludit ganz leicht

So aktivieren Sie den integrierten und deutlich einfacheren Markdown-Parser des Bludit CMS und schalten die visuellen Editoren TinyMCE und EasyMDE ab.

Die kleinste PHP Template-Engine und kleinstes CMS der Welt

Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.

Bildlink mit Markdown Parser in Pico CMS realisiert

Mit der Markdown Syntax können Sie auch einen klickbaren Bildlink im Text eintragen. Es ist eine Schachtelung verschiedener bekannter Markdown Format-Befehle.

Markdown Bildliste im Text anlegen und Bilder referenzieren

Dieser Beitrag zeigt Ihnen, wie Sie einen Bildindex in Markdown anlegen und im Texte auf diese Bilder leicht referenzieren können. Dies ist eine Erleichterung.

Teil 2 so einfach installieren Sie die Smarty Engine

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

Teil 7 eigene Templateabfragen in Smarty Template Engine

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.

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.

Dipper fast YAML Parser - YAML Files lesen und schreiben

Dipper ist der kleinste YAML-Parser mit dem YAML Dateien gelesen und geschrieben werden können. Ein PHP-Beispiel zum lesen und schreiben von YAML mit Dipper.

Anleser im Bludit CMS Template DEVTHEME einstellen

Stellen Sie den Anleser des Beitrags im Bludit Template DEVTHEME individuell ein, indem Sie die Anzahl anzuzeigender Zeichen mit einem PHP Befehl begrenzen.

Das Feld TEMPLATE in den Beitragseinstellungen des CMS Bludit

So können Sie das freie Feld TEMPLATE in den Beitragseinstellungen verwenden. Fragen Sie es mit dem folgenden Coding des Beitrags ab und steuern das Templating

Steuern Sie die Art des anzuzeigenden Bludit Templates

Mit diesem Coding können Sie verschiedene Templates starten, jenachdem ob der Leser eine Seite, Kategorie, home oder Tag wählt. Bludit kennt vier Seiten-Typen

Templating, funktionfähiges Template für das CMS GetSimple

Teil 1 - Der Einstieg in das Templating mit dem freien CMS GetSimple - der Name ist Programm, denn dieses CMS ist klar und leicht beherrschbar strukturiert.

Templating 3 ein einfaches Layout für das CMS GetSimple anlegen

Teil 3 - Ein GetSimple Template erstellen. In Verbindung mit dem freien und beliebten CSS-Framework Bootstrap eine leichte Sache auf dem Weg zum eigenen Blog.

Democode und Beispieltemplate für Handlebars in JavaScript

Dieser Beitrag zeigt ein einfaches Demo Template für die JavaScript basierte Template Engine Handlebars. Dieses Template ist sogar offline funktionsfähig.

Welchen Sinn machen JavaScript Template Engines heutzutage?

Man darf sich durchaus fragen welchen Sinn Template-Engines in JavaScript machen, da diejenigen User zunehmen, die das JavaScript im Browser deaktivieren.

Standardisiertes PHP Formular Designpattern entwickeln

Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.

Affiliate Links mit YAML und TWIG für Pico CMS ohne Plugin

Zufällige Affiliate-Links auch ohne externe Plugins mit Hilfe von YAML und der Templatesprache Twig in Pico CMS realisieren, das ist sogar wirklich sehr einfach.

Affiliate Links mit YAML und TWIG für Pico CMS ohne Plugin

Zufällige Affiliate-Links auch ohne externe Plugins mit Hilfe von YAML und der Templatesprache Twig in Pico CMS realisieren, das ist sogar wirklich sehr einfach.

Mit einem HTML-Template beginnen - Templating Tipps

Erarbeiten Sie als Prototypen ein reines HTML-Template das Ihnen zusagt. HTML-Templates sind schneller entwickelt und müssen weniger Restriktionen einhalten.

Die richtige Wahl der Templatesprache Templating Tipps

In welcher Schreibweise sollten Sie CMS Templates erstellen? Gemischt HTML und PHP oder doch lieber waschechtes PHP? Dieser Beitrag erleichtert den Einstieg.

Werden Sie Template-Entwickler so starten Sie Templating Tipps

Werden Sie zum Template-Entwickler und beginnen mit leichten Arbeiten, portieren Sie Ihre Templates später in die großen CMS wie WordPress, Bludit oder Joomla

Ein neues Datenbanfeld für WonderCMS in der json-DB anlegen

Mit diesem Trick legen Sie neue Datenbank-Felder in der JSON-Datenbank des WonderCMS vollkommen automatisiert an - mit nur einer Codezeile im WonderCMS Theme.

th3_alpha.php im WordPress CMS Log und die Beudeutung

Das WordPress Plugin steht im Verdacht Malware zu enthalten. In unterschiedlichen Foren im Netzt sind dazu widersprüchliche Infos zu finden - es ist abzuwarten

Das tree.php Snippet für eine Baumstruktur in Automad CMS

Erstellen Sie im CMS Automad eigene Templates, dann sollten Sie einen Blick auf diese Ordner werfen, denn sie sind maßgeblich für das Template wichtig.

Das Script edit-content.php im Bludit CMS individuell anpassen

Möchten Sie den Backend-Editor des Autors oder Admin individuell anpassen? Dann finden Sie hier den richtigen Pfad zur Programm-Source edit-content.php.

Einfacher SPAM Schutz im Kontaktformular für Bludit CMS

Wenn Sie das Bludit-Plugin Contact3 nutzen, können Sie in diesem Plugin eine einfache und wirkungsvolle Blackliste einbauen, die den Inhalt Ihrer Mail prüft

Ein Array in der de_DE.json des Bludit CMS anlegen

Legen Sie ein Array in der Sprachdatei de_DE.json des Templates an und greifen aus dem Template auf einzelne Key Value Paare zu um Affiliate Links zu erzeugen

Die Methode User() für Abfragen im Bludit CMS nutzen

Greifen Sie mit der Methode User() auf Attribute des angemeldeten und registrierten Benutzers zu und zeigen Namen, Avatare oder Kontaktdaten unter Beiträgen an

E-Mail mit PHP lesen, mit PHP auswerten und im Posteingang löschen

Mit diesem PHP Script lesen Sie eine Mail in Ihrem Postfach, werten den Inhalt mittels PHP aus und löschen im Anschluss die Mail aus dem Posteingang mit PHP.

Eine einfache PHP FlatFile Projekt und Vorhaben DB

In diesem Beitrag können Sie eine kleine FlatFile Projekt Datenbank herunterladen. Eine Beispielimplementierung in Anlehnung an die FlatFileDB von H.Wiledal

PHP mit JavaScript aufrufen

Möchten Sie einen Log-Mechanismus entwickeln den Sie leicht in jedes PICO Template einbinden können, dann ist JavaScript und PHP ideal dafür.

PHP mit JavaScript aufrufen

Möchten Sie einen Log-Mechanismus entwickeln den Sie leicht in jedes PICO Template einbinden können, dann ist JavaScript und PHP ideal dafür.

Was ist yamlCMS - yamlCMS ist nicht zu hacken! Glauben Sie nicht?

yamlCMS ist mein Beitrag und meine eigene Vorstellung an eine sichere Webseite auf Basis eines Flat File CMS mit lesbarer Datenbankstruktur ohne 'Firlefanz'.

Das GRAV CMS Admin Backend und Dashboard herunterladen

Das GRAV CMS Admin Backend muss separat heruntergeladen und installiert werden, erst dann bietet GRAV ein bequemes Backend für den Admin und die Redakteure.

Was ist GRAV CMS? Das sollten Sie vorher unbedingt wissen.

GRAV CMS ist ein kostenloses Content Management System (kurz CMS), welches ohne Datenbank auskommt. Der Webinhalt wird in reinen ASCII-Files gespeichert.

Der erste Start und erster Beitrag der Pico CMS Webseite

Dieser Beitrag zeigt Ihnen die einfache Installation und Inbetriebnahme des freien PICO CMS ist. Es sind nur wenige Handgriffe und wenig Voraussetzungen nötig.

Mit Typemill CMS auf eine neue Domain und Webseite umziehen

So einfach ziehen Sie mit einer Typemill CMS Webseite auf eine neue Domain um, es sind drei einfache Schritte die Sie kinderleicht machen können.

CMS die ich empfehlen würde bevor Sie zu WordPress greifen

Meine ganz persönliche Empfehlung für ein CMS aufgrund meiner Erfahrungen als Langjähriger Autor und Opfer vieler Hacker-Angriffe auf meine Seiten.

Was ist ein CMS und Wie funktioniert es?

Die besten Content-Management-Systeme im Vergleich: Alles was ihr über WordPress, Joomla!, Drupal, TYPO3 und Co. wissen müsst. Jetzt Vergleich ansehen.

Welches CMS für was? Oder doch lieber pures HTML?

Eine häufige Frage in vielen Foren, daher eine kleine Empfehlung zur Auswahl des richtigen CMS, denn oft reicht ein Template-Parser wie Twig oder Smarty aus!


Meta: Instagram CMSWorkbench.de GIMP-Handbuch.de Kontakt Impressum Datenschutz