Tom: Template versa include()

Beitrag lesen

Hello,

Beispiel für die ausgebende Seite (ja, auch hier nur Ausgabe von HTML-Code):

[...]
<body>

<?php

readfile('content.html');  ## setzt voraus, dass die Datei vorhanden und lesbar ist.

?>

</body>
</html>

Bseipiel für die zu inkludierende (?) Seite (ohne head,body,etc.):

<!-- file Anfang -->
<h1>Willkommen auf example.org</h1>
<p>bla bla bla</p>
<!-- file-Ende -->

Ein readfile() reicht aus.
Du kannst es ggf. noch verpacken in

if(is_readable('content.html'))
  {
    readfile('content.html');
  }

http://www.php.net/manual/en/function.is-readable.php

Wenn an der Datei gleichzeitig von einem Anderen auch gearbeitet werden soll, während der Normaluser sie ich anzeigen lässt, müsstest Du aber eher

$content_file = "textbausteine/content.htnl";

$fh = fopen($content,'rb');                       ## Datei zum Lesen öffnen
  if ($fh)                                          ## wenn es geklappt hat
  {
    flock($fh, LOCK_SH);                            ## Fragen, ob Datei frei ist und gegen
                                                    ## Veränderung sperren
    $content = fread($fh, filesize($content_file)); ## Datei auslesen
    fclose($fh);                                    ## Datei schließen und Sperre aufheben
    echo $content;                                  ## Dateiinhalt ausgeben
  }
  else
  {
    echo "$content steht zur Zeit nicht bereit";
  }

Dieses Verfahren hat den Vorteil, dass man Inhalte in der Datei (also im Lesepuffer) noch verändern kann, z.B. indem man mittels Regular Expression oder Str_Replace() <'-- DETAIL02 --> austauscht gegen einen anderen String, den man sich aus einer weiteren Datei oder Abfrage besorgt hat oder aus der Session. Das könnte z.B. der username sein.

Außerdem muss man $content nicht sofort nach dem Auslesen ausgeben, sondern kann das ganz am Ende des PHP-Scriptes tun. So bekommt man Ordnung in seien Seiten.

Die Technik mit dem Austauschen von Platzhaltern in den HTML-Bausteinen nennt man Template-Technik.

Sie hat gegenüber dem Include den Vorteil, dass man die Templates auch von den Usern erstellen lassen kann. Das führt dann zwar eventuell zu einem HTML-Fehler, aber es kann Dir kein PHP-Code eingeschleust werden.

Harzliche Grüße vom Berg
http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau