Seite 1 von 1

templates parsen

Verfasst: 11.05.2003 17:48
von bangolo
hallo alle :-D

gibt es eigentlich eine Anleitung oder ein Beispiel, wie der parser für die templates beim phpBB funktioniert. Ich bin dabei einige Erweiterungen für mein Forum zu machen und möchte da halt die templates so aufbauen wie beim Forum selber. sich das einzeln rauszusuchen ist verdammt aufwendig. :D

Verfasst: 11.05.2003 19:16
von Acid
Naja... in den *.php Datei wird mit..
$template->set_filenames(array(
'body' => 'datei_body.tpl')
);
..die dazugehörige *.tpl definiert und mit..
$template->pparse('body');
..dann ausgegeben.
$template->assign_vars(array(
'IRGENDWAS' => $irgendwas,
));
...damit definierst Du dann die einzelnen Variabeln (Ausgabe in Template wäre {IRGENDWAS}, wenn es sich innerhalb einer while Schleife befindet mit..
$template->assign_block_vars('irgendwas', array(
'IRGENDWAS' => $irgendwas,
));
..die Ausgabe im Template wäre dann..
<!-- BEGIN irgendwas -->
{irgendwas.IRGENDWAS}
<!-- END irgendwas -->
Um z.B. einen switch einzubauen... schreibst Du in die *.php..
if ( $irgendwas == $was_anderes )
{
$template->assign_block_vars('switch_irgendwas', array());
}
..die Ausgabe im Template wäre dann..
<!-- BEGIN irgendwas -->
was_auch_immer
<!-- END irgendwas -->

Oder wolltest was anderes wissen ?

Verfasst: 11.05.2003 20:43
von bangolo
erstmal schönen dank für die schnelle Antwort, ist eigentlich genau das was ich auch meinte. Ich will die Kategorien des Forums aus geben und verwende dafür folgenden code

Code: Alles auswählen

$template->assign_vars(array(
			'L_SITEMAP_TITEL' => $lang['sitemaptitel'],
			'L_KATEGORIE_TITEL' => $lang['sitemapkategorien'],
		));
		
		$qCat = "SELECT cat_title, cat_id FROM " .CATEGORIES_TABLE. " ORDER BY cat_title"; 
		$sitemap_cat = mysql_query($qCat);
		
		while($row=  mysql_fetch_assoc($sitemap_cat)) 
		{ 
#      		echo "<a href='index.php?c=".$row["cat_id"]."' style='text-decoration:none;'>".$row["cat_title"]."</a><br>"; 
			$template->assign_block_vars('sitemap_categorie_row', array(
			'KAT_ID' => $row["cat_id"],
			'KAT_TITLE' => $row["cat_title"]
			)
		
		);
		#echo $row["cat_title"];
			} 
		#$template->assign_block_vars('sitemap', array());
das template sieht dann so aus

Code: Alles auswählen

<!-- BEGIN sitemap -->
		<table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline">
		  <tr>
			<td class="catHead" height="25"><span class="genmed"><b>{L_SITEMAP_TITEL}</b></span></td>
		  </tr>
			<tr>
				<td class="genmed" height="25"><span class="genmed"><b>{L_KATEGORIE_TITEL}</b></span></td>
		 	</tr>
		<!-- BEGIN sitemap_categorie_row -->
				
				<tr>
			<td class="catHead" height="25"><span class="genmed"><b>{sitemap_categorie_row.KAT_ID}</b>{sitemap_categorie_row.KAT_TITLE}</span></td>
		  </tr>
			
		<!-- END sitemap_categorie_row -->
	</table>
<br />
		<!-- END sitemap -->
ich meine eigentlich das wäre so wir du das beschrieben hast, aber irgendwie zeigt er mir nichts an. Ich verstehe auch noch nicht so ganz ob ich das richtig gemacht habe mit dem einbau der Schleife.

Danke nochmal[/quote]

Verfasst: 11.05.2003 22:17
von Acid
<!-- BEGIN sitemap -->/<!-- END sitemap --> in der tpl benötigst Du nicht (soll doch nur ´n Kommentar deinerseits sein oder?)

BEGIN/END sind Variabeln im phpBB-Templatesystem und wenn Du mehrere solche Variabeln verschachtelst... muss das auch in der *.php definiert werden (s. catrow und catrow.forumrow in index.php).


In der *.php sind doch auch extension.inc und common.php eingebunden oder ?

Verfasst: 11.05.2003 22:52
von bangolo
jo danke es funktioniert, der Fehler lag bei dem verschachteln die sitemap war kein kommentar und mußte dann halt mit sitemap.cat_row davor. Ich habe das in der index.php gesehen wie da die posts ausgegeben werden.

Danke nochmal hat mir sehr geholfen :-D

Verfasst: 12.05.2003 02:49
von bangolo
habe noch eine Frage :-D

kann man auch tiefer verschachteln, also etwa so

<!-- BEGIN header -->
wert ausgeben
<!-- BEGINN zeile -->
wert ausgeben
<!-- BEGINN spalte -->
werte ausgeben
<!-- END spalte -->
<!-- END Zeile -->
<!-- END header -->

wenn ja muss man dann den Wert in der Spalte header.zeile.spalte.wert angeben ?. Dabei sind halt Zeile und spalte wiederholende Werte header ist normal.

Verfasst: 12.05.2003 11:34
von Acid
ja, sicher auch das ist möglich.

Verfasst: 12.05.2003 15:46
von bangolo
hmm, habe ich nicht hingekriegt, werd dann nochmal probieren :-D