Einfaches PHP 2

Nachdem wir im ersten Teil gesehen haben, wie man PHP einfach einsetzt, folgt jetzt eine tiefer gehende Dynamisierung unserer Webseite.

Die drei Verweise:

41|      <li><a href="http://php.nobs-nobody.de/simple/home/" ...
42|      <li><a href="http://php.nobs-nobody.de/simple/impressum/" ...
43|      <li><a href="http://php.nobs-nobody.de/simple/kontakt/" ...

in der index.tpl.php aus dem ersten Teil dieser Seite, schlagen fehl, wenn im Ordner ‚tpl‘ eine der entsprechenden HTML-Dateien nicht existiert (oder ihr Name einfach nur falsch geschrieben wurde).
Zusätzlich müssen wir jedes Mal, wenn wir eine neue Seite erstellen wollen, ein neues Template erstellen (z. B. galerie.html) und im Main-Template einen Verweis darauf setzen. Viel einfacher wäre es doch aber, wenn wir nur das Template erstellen und fertig.
Das ist zugegebenermaßen nur ein trivialer Grund, versetzt uns aber in die Lage, uns Dateioperationen mittels PHP und vor allem die Erstellung eigener Funktionen (immerhin ist PHP eine prozedurale Sprache) etwas genauer anzuschauen.

Wir legen uns im Ordner unserer Webseite einen neuen Ordner namens ‚func‘ an und legen dorthinein eine Datei ‚functions.inc.php‘.
In die Datei kommt fogender Code:

<?php
// ließ alle Template-Datenamen im übergebenen Ordner aus
function readTemplates($dirName) {
    // Verzeichnishandle erstellen
    $directory = opendir($dirName);
    // Dateinamen einzeln auslesen
    while ($fileName = readdir($directory)) {
        // wenn Dateiname '.' oder '..'
        if ($fileName == '.' || $fileName == '..') {
            //nimmt die nächste Datei
            continue;
        }
        // wenn Datei mit der Endung '.html'
        if (strtolower(substr($fileName, strrpos($fielName, '.')) == ".html") {
            // Dateinamen (ohne Endung) in einem Array speichern
            $files[] = substr($fileName, 0, strrpos($fileName, '.'));
        }
    }
    // Verzeichnishandle schließen
    closedir($directory);
    // templates zurückgeben
    return $files;
}
?>

Jetzt müssen wir noch in der Datei index.php in unserem Verzeichnis eine kleine Änderung durchführen:

<?php
// client request klonen
$request = $_REQUEST;
// functions einbinden
require("func/functions.inc.php");
// templates lesen
$templates = readTemplates("../tpl/");
// alphabetisch sortieren
sort($templates, SORT_STRING);

// standard wert für page setzen wenn, im client request keiner oder ein falscher gesetzt ist
if (empty($request["page"]) || !in_array($request["page"], $templates)) {
    $request["page"] = "home";
}
// html code einbinden
require("tpl/index.tpl.php");
?>

und in der Datei index.tpl.php im Ordner ‚tpl‘ die eigentliche Dynamisierung durchführen. Die drei Verweise ersetzen wir durch:

40|    ...
41|    <?php
42|    // für jede Template-Datei
43|    foreach ($templates as $template) {
44|        // einen Verweis erstellen
45|        print("<li><a href=\"http://php.nobs-nobody.de/simple/".$template."/\">");
46|        print(ucfirst($template)."</a></li>\n");
47|    }
48|    ?>
49|    ...

Damit haben wir die Seite weiter „dynamisiert“, denn mit jeder neu angelegeten Datei im Ordner ‚tpl‘ , die die Endung ‚.html‘ hat, wird im Main-Template und damit auf der Webseite automatisch ein neuer Verweis in der Navigation erstellt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.