PHP/Tutorials/Templates/Datenausgabe

Aus SELFHTML-Wiki
< PHP‎ | Tutorials‎ | Templates
Wechseln zu: Navigation, Suche

Auf der vorherigen Seite wurden wiederkehrende HTML-Strukturen in Templates ausgelagert, die aber immer wieder PHP-Variablen enthalten.

Optimal wäre ein reines HTML-Template, das mit CSS im Browser direkt getestet werden kann, ohne dass man dazu PHP und sein Befüllen mit Inhalt benötigt. Und wenn PHP dann anhand des URI die passenden Inhalte ins Dokument wirft, dann hat man seine separation of concerns.

Mehrsprachige Webseite

Ein gutes Beispiel für einen Einsatz von variablen Textinhalten bietet eine mehrsprachige Webseite. Ob die Internationalisierung durch die Abfrage der eingestellten Sprache des Browsers (Sprachauswahl mittels Accept Language) oder durch ein Menü erfolgt, ist hier zweitrangig.

i18n.json
{
"all-rights-reserved": {
"de": "Alle Rechte vorbehalten.",
"en": "All rights reserved."
},
"sub-pages": {
"de": "Unterseiten",
"en": "sub-pages"
},
"welcome-heading": {
"de": "Willkommen!",
"en": "Welcome!"
},
"welcome-message": {
"de": "Herzlich willkommen auf unserer Seite!",
"en": "Welcome on our website!"
}
}

Alle Textinhalte wie Begrüßungen und Warnhinweise sind in einer JSON-Datei gespeichert.

Template aus reinem HTML
<!DOCTYPE html>
<html lang="{$lang}">
<head>
  <meta charset="utf-8">
  <title>{$title} - Firmenname</title>
  <link rel="stylesheet" href="screen.css" media="screen">
  <link rel="stylesheet" href="print.css" media="print">
</head>
<body>
  <nav>
    <h2>{#sub-pages}</h2>
  </nav>
  <header>
    <h1>{#welcome-heading}</h1>
    <p>{#welcome-message}</p>
  </header>
  <main>
  ...
  </main>
  <footer>{#all-rights-reserved}</footer>
</body>
</html>

Die Templates erhalten nun Platzhalter, die aber kein PHP darstellen. Mit PHP kann man nun nach dem Muster {#irgendwas} und {$irgendwas} suchen, um {#irgendwas} mit den passenden Textbausteinen zu befüllen und {$irgendwas} mit den passenden Inhalten.

Die PHP DOMDocument-Klassensammlung für das Document Object Model (DOM) stellt einen vollständigen Parser für HTML- und XML-Elemente zur Verfügung.

ToDo (weitere ToDos)

Kapitel muss erstellt werden
Jetzt käme der eher aufwändige Part: Die PHP-Funktionalitäten, die steuern, wie man HTML zu einem DOM-Objekt einliest (mit dem HTML5-Parser, oder lieber noch nicht?), die Textbausteine einsetzt und die Inhalte einpflegt. Das kommt dann aber schon fast einem Framework gleich. Das dauert länger und würde auch diesen Artikel sprengen.

-- Matthias Scharwies (Diskussion) 07:09, 4. Jan. 2019 (CET)