Teil 6 Textbausteine mit Smarty lesen

home smarty

COBOL - Altsysteme warten und erweitern. Das umfassende Praxis-Handbuch   -  Dieses Buch richtet sich an erfahrene Entwickler objektorientierter Sprachen wie C++ oder Java. Es vermittelt die Funktionsweise der Programmiersprache COBOL, um die in zahlreichen Implementierungen auf unterschiedlichen Plattformen immer noch produktiv laufenden COBOL-Programme zu verstehen, zu warten und bei Bedarf mit zusätzlichen Funktionalitäten zu erweitern. Dafür bietet es Ihnen sowohl eine grundlegende Einführung in die Programmierung mit COBOL als auch eine thematisch gegliederte Referenz der Befehle mit praktischen Beispielen.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

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

Inhalt

Teil 6 - Trennen Sie den Programmcode vom Text. Dieser Beitrag zeigt Ihnen wie Sie dies mit wenigen Zeilen Code realisieren und reine Textbausteine erzeugen.

Textbausteine mit Smarty lesen

Das bisherige PHP-Rahmenwerk um die freie Template Engine Smarty funktioniert schon sehr gut. Etwas nachteilig ist allerdings noch die Tatsache, das die Textbausteine immer noch mit wenigen PHP-Variablen vermischt sind. In diesem Teil der Beitragsreihe geht es darum, den Text vollständig von den Templatevariablen zu trennen.

01  <?php
02    $titel_var   =
03    "Das ist der Titel Beitrag A";
04
05    $anleser_var =
06    "Beitrag A ist der erste Beispieleitrag";
07
08    $inhalt_var  =
09    "<p>Der Inhalt des Beitrags A - der Haupttext.</p>";
10
11    $autor_var   = "Oliver Lohse";
12    $mail_var    = "moc.liamg@tset‎";
13    $datum_var   = "12-2019";
14    $footer_var  = "(c) Oliver Lohse";
15  ?>

Code

So oder ähnlich (Coding oben) sieht der Content Ihres Templates aus, der Beitragstext ist bestimmten Templatevariablen zugewiesen in denen er später zur Laufzeit angezeigt werden soll. Die Mischung aus PHP und Beitragstext ist etwas hinderlich beim schreiben von Inhalt, daher müssen Sie dies jetzt anpassen. Der neue Dateiaufbau ist nun wie folgt:

01  Das ist der Titel Ihrer Seite
02  ~~~
03  Hier kommt der Anleser des Beitrags
04  ~~~
05  Der eigentliche vollständige Beitragstext
06  ~~~
07  Name des Autors
08  ~~~
09  Datum
10  ~~~
11  Mailadresse
12  ~~~
13  URL des vorangegangenen Beitrags
14  ~~~
15  URL des folgenden Beitrags
16  ~~~
17  URL zum Index bzw. Home

Code

Alle PHP relevanten Attribute sind aus dem Inhalt der Datei verschwunden. Die Zuweisung der Textbausteine zu den Templatevariablen muss an anderer Stelle erfolgen, er findet ab sofort in der index.php statt.

01  <?php
02      require_once('libs/Smarty.class.php');
03      $smarty = new Smarty();
04    
05      $smarty->template_dir = 'templates';
06      $smarty->compile_dir  = 'templates_c';
07      $smarty->config_dir   = 'configs';
08  
09    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
10    // In Abhaengigkeit vom Eingabeparameter einen anderen Text einbinden
11    // Ein Default-Beitrag wird zuerst geladen falls keine Eingabe erfolgt
12    // dies wird dann vom darauffolgenden IF ueberschrieben.
13    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14    if(isset($_GET['artikel'])) {
15      $artikel = $_GET['artikel'];
16    } else {
17      $artikel = 'home';
18    }
19  
20    $fileContent = file_get_contents ("texte/".$artikel.".php");
21    $textBausteine = explode("~~~", $fileContent);
22  
23    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24    // Die Template-Vars (links ) mit den Smarty-Template-Vars (rechts)
25    // verbinden
26    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27  
28    $footer_var = '© Developed by Oliver Lohse with Smarty Template Engine and Bootstrap CSS';
29
30    $smarty->assign('titel_tmpl',        $textBausteine[0]);
31    $smarty->assign('anleser_tmpl',      $textBausteine[1]);
32    $smarty->assign('inhalt_tmpl',       $textBausteine[2]);
33    $smarty->assign('autor_tmpl',        $textBausteine[3]);
34    $smarty->assign('datum_tmpl',        $textBausteine[4]);
35    $smarty->assign('mail_tmpl',         $textBausteine[5]);
36    $smarty->assign('beitrag_back_tmpl', $textBausteine[6]);
37    $smarty->assign('beitrag_next_tmpl', $textBausteine[7]);
38    $smarty->assign('home_tmpl',         $textBausteine[8]);
39
40    $smarty->assign('footer_tmpl',       $footer_var);
41  
42    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
43    // Das Template starten
44    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45    $smarty->display('artikel.php');
46  
47  ?>

Code

Die Zeile 20 und 21 liest die Datei, die bekanntlich als Parameter an die index.php übergeben wird, als vollständigen String ein. Der anschließende explode splittet den Inhalt anhand des Delimiters ~~~ in je einen Array-Slot auf. Jeder einzelne Slot des Arrays wird dann von Zeile 30 bis 38 den Templatevariablen zugewiesen.

Anmerkung - Sie können als Text-Trenner statt des ~~~ auch jedes andere Spezialzeichen nutzen, wichtig ist, das dieses nicht im regulären Text auftauchen sollte.


 28.01.2024    Kontakt@Oliver-Lohse.de    Textbausteine

Angular das große Handbuch zum JavaScript-Framework. Einführung und fortgeschrittene TypeScript-Techniken   -  Angular ist das JavaScript-Framework für professionelle Webapplikationen - hier lernen Sie es umfassend kennen! Christoph Höller macht Sie mit allen relevanten Technologien, Standards und Kernbestandteilen des Frameworks vertraut. Am Praxisbeispiel einer Projektverwaltung führt Ihnen der Webprofi die Komponenten und Konzepte von Angular vor. Formulare, Routing, HTTP-Anbindung und Testing - hier lernen Sie Schritt für Schritt, wie Sie eigene Angular-Webapplikationen erstellen. Inkl. aller neuen Features und Komponenten. Aktuell inkl. Material Design.

Wir sind Mitglied im Amazon.Partnernet und können mit Affiliate-Links den Betrieb der Webseite etwas unterstützen, für Sie als Leser ist das natürlich vollkommen kostenlos.

Weitere passende Beiträge

Impressum


CMSWorkbench.de ist eine reine Entwickler-Webseite und dient vorwiegend als Wissensspeicher für die Entwicklung von CMS

Datenschutz


Die Webseite verwendet keinerlei Tracking- oder Speicher-Mechanismen, die Rückschlüsse auf Ihre IP oder das Leseverhalten zulassen

Affiliate


Wir sind Mitglied im Amazon Partnernet und können mit Affiliate-Links (* den Betrieb der Seite etwas unterstützen, für Sie ist das natürlich kostenlos

Kontakt


Sie können mit uns über eMail Kontakt aufnehmen, schreiben Sie an Kontakt@Oliver-Lohse.de