Seite 1 von 1

Frage zur Template-Funktion in PHPLIB

Verfasst: 21.10.2002 23:05
von Thies
Ich habe jetzt angefangen, mich mit Templates zu beschäftigen und die Templates-Class in der PHPLIB ist wirklich gut.

Nur verstehe ich eine Sache nicht.

So sieht das Template-File der Anzeige der News aus

Code: Alles auswählen

<br>
<!-- BEGIN artikel -->
<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr>
<td class="reiter1" width="100%" bgcolor=black><font size=2 face=arial color=white><B>{news_header}<br><br>
<small>gepostet am {news_datum} von <a class="wsml" href="mailto:{autor_mail}">{autor}</a>
</small></font></B></font></td></tr></table>
<table cellspacing="0" cellpadding="10" border="1" bordercolor="#000000" width="100%"><tr><td width="100%" class="menu2"><font face="arial" size="2"> 
<!-- BEGIN bild -->
<img src="/NewsPro/upload/{image}" border="0" align="left" hspace="5" vspace="0">
<!-- END bild -->
{news_text}
<!-- BEGIN quellen -->
<br><br>  <FONT size=1>(Quelle: <a class="text" href="{quelle_url}" target="_blank" onMouseOver="window.status='Quelle';return true"><font face="arial" color="#dd0000">{quelle}</font></A>)</font><br>
<!-- END quellen -->  
</font></td></tr></table><br>
<!-- END artikel -->
Und so sieht der Code in der PHP-Datei aus:

Code: Alles auswählen

$tpl->set_block("meldungen", "artikel", "artikel_handle" );    // initialisierung der blockanweisung

$result = mysql_query("SELECT * FROM bwg_news order by datum DESC LIMIT 0, 20");   
	echo mysql_error();
while($row = mysql_fetch_row($result))
	{
        $tpl->set_var(array(
		"news_datum"	=>	$row[1],
		"news_header"	=>	$row[3],
		"news_text"	=>	$row[4],
		"image"		=>	$row[5],
		"quelle"		=>	$row[7],
		"quelle_url"	=>	$row[8],
		"autor"		=>	$row[9],
		"autor_mail"	=>	$row[10] ));

        $tpl->parse("artikel_handle", "artikel", true);
Die News werden auch angezeigt, nur möchte ich erreichen, dass der Teil

Code: Alles auswählen

<!-- BEGIN bild -->
<img src="/NewsPro/upload/{image}" border="0" align="left" hspace="5" vspace="0">
<!-- END bild -->
auch nur dann angezeigt wird, wenn das Feld image überhaupt einen Inhalt besitzt, dasselbe bei dem Bereich Quelle. Aktuell zeigt er immer alles an, also auch "fehlende" Bilder.

Wie muss ich die Template-Anweisungen strukturieren, damit ich das erreiche?

Danke im Voraus

Frank-Andre Thies

Verfasst: 22.10.2002 11:58
von Acid
Du müsstest dann den <img> Tag in die *.php verschieben..


while($row = mysql_fetch_row($result))
{
$image = ( !empty($row[5]) ) ? '<img src="/NewsPro/upload/' . $row[5] . '" border="0" align="left" hspace="5" vspace="0" />' : '';

$tpl->set_var(array(
"news_datum" => $row[1],
"news_header" => $row[3],
"news_text" => $row[4],
"image" => $image,
"quelle" => $row[7],
Und im Template dann nur {image} ...

Verfasst: 22.10.2002 14:12
von Gast
Danke, mit der Lösung kann ich erstmal arbeiten. Der Nachteil ist nur, dass dann wieder Layouts in der php-Datei geändert werden müssen und nicht nur im Template.

Wie es aussieht, kann die template.inc keine verschachtelten Blöcke, es gibt wohl eine andere Template-Klasse, die das kann. Die werde ich mal runterladen und prüfen.

Danke nochmals

Frank-Andre