Verschiedene Templates in einer schleife ausgeben?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
DarkPrisma
Mitglied
Beiträge: 1
Registriert: 13.05.2008 19:12

Verschiedene Templates in einer schleife ausgeben?

Beitrag von DarkPrisma »

huhu ihr lieben,

wie krieg ich es hin, das ich nur beim ersten durchlauf einer schleife ein anderes tempalte lade, als beim 2.?

if($i==0){
$template->set_filenames(array('newbodykondi' => 'viewtopic_kondi_body.tpl'));
}else{
$template->set_filenames(array('newbodykondi' => 'viewtopic_normal_body.tpl'));
}

$template->assign_var_from_handle('CONTENTBOX', 'newbodykondi');

der printet mir immer nru an der stelle wo ich {CONTENTBOX} im template habe das template viewtopic_kondi_body.tpl hin. nur wieso? die 0 ist 100% da, der geht auch in die if rein, nur er ersetzt das nicht... desweiteren werden die inhalte in dem template nicht geparsed, die variablen sind alle leer...
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Den Platzhalter CONTENTBOX gibt's nur ein mal. Beim zweiten Durchlauf wird der also überschrieben, du bekommst also immer nur die Daten aus dem zweiten Durchlauf. Du hast also mehrere Möglichkeiten:
  • Du verwendest nicht einen, sondern zwei unterschiedliche Platzhalter für die beiden Templates
  • Du verwendest die speziell dafür vorhandene Funktion um den Inhalt der Templates erst in eine PHP Variable zu legen und dann von dort in das Template zu schieben.
  • Du packst die beiden Templates einfach zusammen in eines
Der letzte Punkt ist natürlich nicht immer einfach durchzuführen beseitigt aber i.a. viele Probleme. Wenn die Variablen nicht mit Inhalt gefüllt sind wenn sie im Template ankommen, dann liegt das mit hoher Wahrscheinlichkeit daran, dass sie vorher auch noch nicht mit Inhalt gefüllt wurden. Zu dem Zeitpunkt, wo du assign_var_from_handle benutzt wird dieses spezielle Template mit den aktuell vorhandenen Daten geparst und befüllt. Wenn einige der Daten erst später im Skript mit Inhalt gefüllt werden, dann tauchen diese in dem Template dennoch nicht auf, du musst also auf die Reihenfolge achten und das assign_var_from_handle so spät wie möglich durchführen, so dass alle gewünschten Daten da sind.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
Antworten

Zurück zu „Coding & Technik“