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 - 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...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 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 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 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;
...
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.
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:
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.
So aktivieren Sie den integrierten und deutlich einfacheren Markdown-Parser des Bludit CMS und schalten die visuellen Editoren TinyMCE und EasyMDE ab.
Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.
Mit der Markdown Syntax können Sie auch einen klickbaren Bildlink im Text eintragen. Es ist eine Schachtelung verschiedener bekannter Markdown Format-Befehle.
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.
Nachdem Sie die kostenlose Template-Engine Smarty herunter geladen haben, installieren Sie die Programme auf den Webserver und beginnen mit dem Templating.
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.
Erstellen Sie ein Webseite mit der Template-Engine Smarty ohne aufwändigen Programm Code. Ein trivialer Beitragsloop wiederholt sich in festen Strukturen.
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.
Stellen Sie den Anleser des Beitrags im Bludit Template DEVTHEME individuell ein, indem Sie die Anzahl anzuzeigender Zeichen mit einem PHP Befehl begrenzen.
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
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
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.
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.
Dieser Beitrag zeigt ein einfaches Demo Template für die JavaScript basierte Template Engine Handlebars. Dieses Template ist sogar offline funktionsfähig.
Man darf sich durchaus fragen welchen Sinn Template-Engines in JavaScript machen, da diejenigen User zunehmen, die das JavaScript im Browser deaktivieren.
Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.
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.
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.
Erarbeiten Sie als Prototypen ein reines HTML-Template das Ihnen zusagt. HTML-Templates sind schneller entwickelt und müssen weniger Restriktionen einhalten.
In welcher Schreibweise sollten Sie CMS Templates erstellen? Gemischt HTML und PHP oder doch lieber waschechtes PHP? Dieser Beitrag erleichtert den Einstieg.
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
Mit diesem Trick legen Sie neue Datenbank-Felder in der JSON-Datenbank des WonderCMS vollkommen automatisiert an - mit nur einer Codezeile im WonderCMS Theme.
Das WordPress Plugin steht im Verdacht Malware zu enthalten. In unterschiedlichen Foren im Netzt sind dazu widersprüchliche Infos zu finden - es ist abzuwarten
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.
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.
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
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
Greifen Sie mit der Methode User() auf Attribute des angemeldeten und registrierten Benutzers zu und zeigen Namen, Avatare oder Kontaktdaten unter Beiträgen an
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.
In diesem Beitrag können Sie eine kleine FlatFile Projekt Datenbank herunterladen. Eine Beispielimplementierung in Anlehnung an die FlatFileDB von H.Wiledal
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.
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.
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 muss separat heruntergeladen und installiert werden, erst dann bietet GRAV ein bequemes Backend für den Admin und die Redakteure.
GRAV CMS ist ein kostenloses Content Management System (kurz CMS), welches ohne Datenbank auskommt. Der Webinhalt wird in reinen ASCII-Files gespeichert.
Dieser Beitrag zeigt Ihnen die einfache Installation und Inbetriebnahme des freien PICO CMS ist. Es sind nur wenige Handgriffe und wenig Voraussetzungen nötig.
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.
Meine ganz persönliche Empfehlung für ein CMS aufgrund meiner Erfahrungen als Langjähriger Autor und Opfer vieler Hacker-Angriffe auf meine Seiten.
Die besten Content-Management-Systeme im Vergleich: Alles was ihr über WordPress, Joomla!, Drupal, TYPO3 und Co. wissen müsst. Jetzt Vergleich ansehen.
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!