Seite 1 von 1

suche infos zu templates

Verfasst: 16.07.2004 17:27
von Scoutman
da ich leider keine ahnung von der funktionsweiße von templates habe suche ich dazu infos im netz. oder kann mir hier einer erklären wie man templates erstellt?

Verfasst: 16.07.2004 17:31
von jasc

Verfasst: 16.07.2004 18:03
von Scoutman
danke das bezieht sich aber alles auf phpbb. ich will selber templates unabhängig von phpbb erstellen.

Verfasst: 16.07.2004 19:27
von dr_Alex
also ich benutze dieses system hier und bin eigentlich sehr zufrieden.

http://www.php-tools.net/site.php?&PHPS ... wnload.xml

ich hoffe dies konnte helfen :)
mfg
Alex

Verfasst: 16.07.2004 22:09
von jasc
Scoutman hat geschrieben:danke das bezieht sich aber alles auf phpbb. ich will selber templates unabhängig von phpbb erstellen.
Naja ich dachte halt, dass man sich ja ein bisschen an der phpbb-Templatestruktur orientieren kann, daher habe ich die Links mal geschrieben :-).

Verfasst: 17.07.2004 00:48
von rox²³
Es ist eigentlich ganz einfach ein Templatesystem zu erstellen (ohne loops) mit loops wirds dann schon schwieriger.

Ich mache das so:

Die eigentliche Funktion sieht so aus:

Code: Alles auswählen

<?php
function template ($tmpl_name, $tmpl_content, $dir) {
      $pfad = "".$dir."/".$tmpl_name."";
      $tmpl = file_get_contents($pfad);
      if ( trim($tmpl) != "" ) {
        $work = $tmpl;
        if(isset($tmpl_content)) {
        while ( list( $key, $val ) = each( $tmpl_content ) ) { 
                $x = "%%" . strtolower($key) . "%%";
          $work = str_replace($x, $val, $work);
          }
        }
      }
    return $work;
}
?>
In der Funktion werden alle Strings die mit %% anfangen und mit %% enden durch den Inhalt des Arrays $tmpl_content ersetzt. Fals du keine Ausgabe php Seits hast und nur reiner HTML Code ausgeben werden soll wird geprüft ob ein Array namens $tmpl_content vorhanden ist: if(isset($tmpl_content)) {

Die while Schleife wird solange durchlaufen bis alle %%bla%% mit dem inhalt vom Array ersetz wurden.

Demzufolge sehen deine Templates dann etwa so aus:

Code: Alles auswählen

<html>
<head><title>%%titel%%</title></head>
<body>%%inhalt%%
</body>
</html>

In der php Datei werden die Templates dann so angesprochen:

Code: Alles auswählen

$tmpl_name = 'dateiname.tpl';
require_once('./verzeichniss/class_template.php');
echo template ($tmpl_name, $tmpl_content, $dir); 
Wobei $dir den Pfad zu den Template Dateien enthält. $dir kann man in der global.php festlegen oder direkt in der php Datei definieren.

Zwischen $tmpl_name und require_once('./verzeichniss/class_template.php'); kommt der eigentliche inhalt soweit man welchen hat der in der Template Datei eingefügt werden soll. Das Array füllt man so:

Code: Alles auswählen

$tmpl_content['name'] = $name;
$tmpl_content['strasse'] = $strasse;
$tmpl_content['telefon'] = $telefon; 
Die Template datei könnte dann so aussehen:

Code: Alles auswählen

<html>
<head><title></title></head>
<body>%%name%%<br \>
%%strasse%%<br \>
%%telefon%%<br \>
</body>
</html>
Das war eine ganz einfache Variante php Code von HTML Code zu trennen.
Nachteil bei der Variante ist das man bei Schleifen durchläufen aus einer Template Datei 2 oder 3 machen muss. Also die eigentliche schleife muss vom Header bzw Footer des Templates getrennt werden da sonnst der Header oder Footer sooft die Schleife durchlaufen wird wiederhohlt wird.

Verfasst: 17.07.2004 21:03
von Scoutman
vielen dank! hast mir schon mal sehr weitergeholfen. werd ich gleich mal testen...