Hi<p>Ich habe eine kleine Klasse für Templates geschrieben. Ist nichts großes. Die Klasse lädt nur eine Datei, bekommt dann ein Array $arr[Bezeichner]=Inhalt übergeben und ersetzt alle angegebenen Bezeichner mit dem Inhalt. Dann gibt die Klasse das ganze auf dem Bildschirm aus.<br>Das ganze funktioniert auch prima, nur möchte ich die Klasse jetzt erweitern. Und zwar gibt es auf meiner Webseite dynamisch generierte Inhalte, sprich Tabellen mit variablen Zeilenzahlen. Bisher habe ich einfach gar keine Zeilen in die HTML-Template-Datei geschrieben, sondern nur einen Bezeichner, dann sämtliche Zeilen dynamisch im PHP generiert und als Bezeichnerinhalt der Klasse übergeben. Aber ein Template ist ja dazu da, ein Design vorzudefinieren und dazu gehört ja auch zB das Layout von Tabellenzeilen. Also müsste ich in der Templatedatei irgendwie speichern, was so eine Tabellenzeile für einen HTML-Code hat, und das PHP-Script müsste dann diese Angabe zum Generieren der Tabelle nutzen...wie kann ich das am Besten realisieren? Oder gibt es da bessere Lösungen?</p><p>danke schonmal für eure Hilfe, Sebastian Meßmer</p>
Announcement
Collapse
No announcement yet.
Templatesystem
Collapse
X
-
Hallo Sebastian,
Templateklassen gibt es von ganz klein zum bloßen Erstzen von Platzhaltern bis absolut mächtig mit eigener Scriptsprache etc. Ich würde mir hier nicht die Mühe machen wollen eine EIGENE Klasse (frei nach dem Motto: Es wurde schon alles programmiert - nur noch nicht von jedem zu schreiben, sondern die Zeit lieber in ein wenig Googlelei investieren.
Aber als Ansatz zum selber machen: Du definierst in deinem Template einen Block der z.B. eine Tabellenzeile darstellt. An die Stelle, wo die Zeile dann wiederholt ausgegeben werden soll setzt du einen deiner "Bezeichner". Deine Templateklasse muß jetzt zusätzlich den definierten Block aus dem Template extrahieren und diesen dann für jede dynamische Zeile in den entsprechenden Platzhalter schreiben.
Aber wie gesagt, das gibt es alles schon. Eine einfache und aus meiner Sicht gute Klasse ist z.B. die von Kristian Koehntopp siehe <a href=http://www.koders.com/php/fid0C11D864BB3E9A40A57FDED18F503B7891C1C87E.aspx>h ier</a>.
Gruß FalWenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.
Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!
-
hi ich hab schon eine Template klasse geschrieben die auch prima funktioniert...
überall außer in 2scripten!!!!!
und ich komm nicht drauf was da schief läuft....
irgendwie wird die mitte der php übersprungen und nur anfang und ende werden ausgeführt...
ein sehr verwirrendes ergebniss kommt raus..
http://botondope.bo.funpic.de/forumtest
aber alles andere geht!
zb im Kontrollzentrum(username: name passwort: pw) die pns,
das ist fast das gleiche script wie das wo der fehler kommt
woran kann das liegen?
(code gegen anfrage)
EDIT:
dähmlicher server blockt externes linken..
erst http://botondope.bo.funpic.de
dann geht die url(oder auf link: der test ordner klicken
Comment
-
ok also (ich verstehs ja selber nicht :P)
naja also das script sieht grob so aus:
<pre>
//quatsch aus db laden
//platzhalter ersetzen
$code = str_replace('<!--thread_Name-->',$title,$code);
//so weit gehts noch, aber jetzt
//inerhalb von beitr_start bis ende alles wiederholen bis db 'leer'
$b=0;
while(($a=strpos($code ,'<!--beitr_start-->',$b))&&($a!=false))
{
$b = strpos($code ,'<!--beitr_ende-->',$a);
if ($b==false){break;}
$beitragscode = substr($code ,$a+18,$b-$a-18);
$rbtrcode = '';
while(/*aus db laden*/)
{
//while von beitrags lesen
$add = $beitragscode;
//platzhalter ersetzen
$add = str_replace('<!--beitr_Name-->',$row->Titel,$add);
$rbtrcode.= $add;
//while von beitrags lesen ende
}
$code = substr($code,0,$a) . $rbtrcode . substr($code,$b+17,strlen($code)-$b-17);
}
echo $code;
</pre>
in $code is jetzt aber nicht mal mehr <!--thread_Name--> ersetzt
wenn ichs vor der schleife ausgebe aber schon!
ich kapier das nicht.
Comment
-
hab den fehler gefunden!!!!
juhu!
danke an alle die sich mein zeug mal durchgelesen haben!
der fehler war (wie gesagt) komisch:
nach
<pre>
if ($row->allow != '*')
{
[..]
}
</pre>
wurde nichts mehr ausgeführt??
(außer echo was es noch kommischer macht
Comment
-
ich hab ihn wuhu!
aber wieso hat php
<pre>$ergebnis = mysql_query($miniabfrage) or require("./dberror.php");</pre>
nicht gemacht?
sondern irgendwas komisches??
naja jetzt steht da <pre>die(mysql_error());</pre> das ist grafisch nicht schön aber auch o
Comment
Comment