Hallo,
<www.freie-geister.de/function.txt>
bei define wird eine template-datei mit einer template-variable verbunden, bei assign wird der varialbe ein wert zugewiesen.
Ja, ich habe mich einmal in die Anleitung von FastTemplate eingelesen, durchblicke es aber noch nicht ganz.
Soweit ich das verstanden habe, hat der Code keine offensichtlichen Fehler, ich kann mir die unvollständige Ausgabe nicht erklären. Wie kommt left_navbar_oben dort hinein, es ist doch nur left_navbar zur Ausgabe angegeben...? Welche Templates werden denn ausgegeben und welche nicht? Nur _head und _bottom?
Ich habe nur eine Idee, welche aber sehr unwahrscheinlich ist... Ohne dass ich mir den Code von FastTemplate angesehen habe, denke ich, das der erste Funktionsparameter für parse und FastPrint als Konstante übergeben wird, sonst müsste ein $ vor dem Variablennamen nötig sein.
Ich weiß nicht, ob Konstantennamen oder Schlüssel für assoziative Arrays erlaubt sind, welche mit einem _ (Unterstrich) beginnen, es kann also sein, dass es helfen würde, wenn du _header und _footer ohne Unterstriche am Anfang notierst - ich habe aber keine großen Hoffnungen, da dort nicht der Fehler auftritt.
Ich weiß leider keinen Rat mehr, vielleicht hilft dir die Anleitung weiter, du scheinst das System besser verstanden zu haben als ich... ich verstehe nicht einmal wieso mehr Templates geparst werden, als ausgegeben werden, binden sie einander ein und müssen deshalb "rekursiv" geparst werden? Wahrscheinlich... Stimmt denn die Reihenfolge?
Ich bin mir nicht sicher, ob folgendes richtig ist:
$tpl->parse(left_navbar, "left_navbar");
$tpl->parse(left_navbar_oben, "left_navbar_oben");
$tpl->parse(left_navbar_mitte, "left_navbar_mitte");
$tpl->parse(left_navbar_unten, "left_navbar_unten");
Es muss doch folgendermaßen vorgegangen werden:
1. ersetze alle Vorkommnisse von 'left_navbar_oben' im Template 'left_navbar' durch den Inhalt des Templates 'left_navbar_oben' (Gehe ich richtig in dieser Annahme? Oder soll '{left_navbar_oben}' ersetzt werden?)
2. ersetze alle Vorkommnisse von 'left_navbar_mitte' im Template 'left_navbar' durch den Inhalt des Templates 'left_navbar_mitte'
3. ersetze alle Vorkommnisse von 'left_navbar_unten' im Template 'left_navbar' durch den Inhalt des Templates 'left_navbar_unten'
4. Gebe den Inhalt des Templates 'left_navbar' aus, welcher mglw. die Inhalte der drei anderen left_navbar_*-Templates enthält
Ich bin mir nicht sicher, ob der obige Code das löst, vor allem die immer gleichen (doppelten) Parameter scheinen mir seltsam, denn es muss doch angegeben werden, *was* soll in *welcher Datei* ersetzt werden soll... nein, wenn ich http://www.thewebmasters.net/php/FastTemplate.phtml#parse_RETURN_FileHandle_s_ lese, wird mir klar, dass das automatisch gemacht wird.
Ich mutmaße, dass die left_navbar_*-Templates bekannt sein müssen, wenn left_navbar auf sie referenziert (das tut es doch, oder?), also setze die left_navbar-Definition ans Ende:
$tpl->parse(left_navbar_oben, "left_navbar_oben");
$tpl->parse(left_navbar_mitte, "left_navbar_mitte");
$tpl->parse(left_navbar_unten, "left_navbar_unten");
$tpl->parse(left_navbar, "left_navbar");
Nicht dass das eine Lösung wäre... entschuldige, ich verstehe es nicht, deshalb nur die unbeholfenen Hinweise.
Grüße,
Mathias
"Die größten Kritiker der Elche waren früher selber welche"
(Prof. Fritz Weigle alias F. W. Bernstein)
Stimme für eine Übergangslösung für Benutzerstylesheets!
http://cforum.teamone.de/phpbt/bug.php?op=show&bugid=36 Vote NOW! ;)