Templatesys mit eigenem Tag für Content

samichlaus111

Grünschnabel
Hi @ all
Ich habe ein kleines Problem. Ich bastle an einem Templatesystem und eigentlich funktioniert das auch wunderbar ich kann schön tags durch inhalt ersetzen lassen. Nur vll. kennen einige von euch das DZCP. Dort kann man sich sehr einfach ein Template machen und dort wo dann der Content hinkommt, wird dann der Inhalt eingefügt. Aber wie mache ich das, denn der Inhalt wird ja nicht immer durch das selbe ersetzt.

Ich nehme hier mal als beispiel 2 Funktionen: Ein GB und die News.
wie das GB aussieht ist im template ordner under gb_show.html definiert. Wie die News aussehen einfach unter news_show.html

Und nun wenn man dort einen tag [index] macht, wird der Content geladen. Wie mache ich das? Denn wie schon erwähnt sieht ja das GB logischerweise anders aus als die News.
Und es steht auch nichts in der Url, was mit $_GET abgefragt werden könnte (das will ich auch nicht), sondern es reicht z.b news/index.php


greez Samichlaus111
 
Hallo

SOrry, aber ich verstehe nicht was du meinst.
Erkläre es bitte nochmal.

Ich versuchs aber trotzdem.
Falls du meinst woher das Templatesystem wissen soll, dass {$inhalt1} durch Inhalt 1 und {$inhalt2} durch den Text von Inhalt 2 ersetzt werden soll, dann ist das so:

Ein Templatesystem machst du prinzipiell mit preg_replace.
Mit preg_replace suchst du ja im template Code nach bestimmten Mustern (hier als BEispiel {$variablename})
Und ich habe es bei meinem so, dass ich dies alles als Klasse formuliert habe und dort gibt es das globale Array $assignedVars.

In dieses kommen dann einfach die Werte als Elemente rein mit dem Variablennamen als Elementschlüssel.

$this->assignedVars['inhalt1'] = "Lala dies ist der Inhalt von Inhalt 1";
$this->assignedVars['inhalt2'] = "Und dies von Inhalt 2";


Nun zum suchen und ersetzen in der template Datei.
Wie gesagt herrschen dort bestimmte Muster vor, die ersetzt werden sollen.
Also suche ich nach diesen via preg_replace und ersetze z.B:
{$inhalt1}
durch
PHP:
<?php 

// wobei $1 das von preg_replace gesetzte variablenname ist
echo $this->assignedVars[$1]; ?>

Gruß Simon
 
Das ist mir schon klar. Wie das mit preg_replace funktioniert.

Link im DCZP Forum

Nur ich will ein template system machen, wo der Nutzer nachher nur in einer html Datei, das Layout der ganzen Seite machen kann. Und dort wo er dann denn content der gesamten Seite will, muss er nur noch [index] einfügen.

Und wie schon erwähnt der inhalt von gb/index.php ist anders als von news/index.php.

greez Samichlaus111
 
Das sollte doch kein Problem sein mach dir doch einfach eine Zentralle index.php datei wo du nacher eben alle deine Template reinladest.

Schema: index.php datei

laden Template1 (Gästebuch)
laden Template2 (Newsletter)

unsw.



Mfg Splasch
 
Nope ich habe das nun so gelöst, wie ichs mir gedacht habe. Man muss eben nicht suchen welche Seiten im [index] Tag stehen, sondern man muss quasi in der php datei z.b. gb/index.php sagen, dass man zum [index] gehört. Wenn ihr versteht was ich meine
 
Zurück