Hallo Forum.
Ich habe mir mal ein einfaches Template-System aus diversen Code-Schnipseln aus dem Web zusammengebastelt. Das läuft jetzt auch wunderbar. Aber ich habe das Problem, dass ich gewisse Teile in meinem Template mehrfach wiederholen will und andere nur einmal ausgeben.
Beim "googlen" bin ich auf folgendes gestossen: Teilbereiche aus Template ersetzen
Leider versteh ich da irgendwie nur Bahnhof und hab keine Ahnung wie ich mein "Template-System" erweitern soll, dass das Ganze klappt. Vllt. ist ja jemand so net und kann mir das Tpl-System erweitern, damit ich sehe wie das ganze geht. Hier mal die Dateien:
viewtopic.tpl
viewtopic.php
tpl_parser.inc.php
Oder vielleicht könnt ihr mir auch sonst irgendwie weiterhelfen... auf jeden Fall schon mal vielen Dank.
Ich habe mir mal ein einfaches Template-System aus diversen Code-Schnipseln aus dem Web zusammengebastelt. Das läuft jetzt auch wunderbar. Aber ich habe das Problem, dass ich gewisse Teile in meinem Template mehrfach wiederholen will und andere nur einmal ausgeben.
Beim "googlen" bin ich auf folgendes gestossen: Teilbereiche aus Template ersetzen
Leider versteh ich da irgendwie nur Bahnhof und hab keine Ahnung wie ich mein "Template-System" erweitern soll, dass das Ganze klappt. Vllt. ist ja jemand so net und kann mir das Tpl-System erweitern, damit ich sehe wie das ganze geht. Hier mal die Dateien:
viewtopic.tpl
PHP-Code:
<h1>{TOPICTITLE}</h1>
[<a href="{POST_REPLY}">Reply</a>]
<Wiederholen>
<a name="{ID}"></a>
<table align="center" border="1" width="650">
<tr>
<td>{USERNAME} wrote on <b>{DATE}</b></td>
<td rowspan="2" align="right" width="20px">{AVATAR}</td>
</tr>
<tr>
<td valign="bottom" height="2"><b>{TITLE}</b></td>
</tr>
<tr>
<td colspan="2">{MESSAGE}</td>
</tr>
<tr>
<td align="right" colspan="2"><a href="viewtopic.php?id={TOPICID}#{ID}"><b>#{ID}</b></a></td>
</tr>
</table>
<br>
</Wiederholen>
[<a href="{POST_REPLY}">Reply</a>]
<p>{COPYRIGHT}</p>
viewtopic.php
PHP-Code:
<?php
$topic = $_topicarray["topictitle"];
$postreply = "reply.php?topic=$topicid";
$var_array = array("TOPICTITLE" => $topic,
"POST_REPLY" => $postreply);
//Das was wiederholt wird
while($row = mysql_fetch_object($result))
{
if(empty($row->avatar)) { $row->avatar = "blank.gif"; };
//Definition der Variablen durch die die Platzhalter
//ersetzt werden.
$id = $row->id; //$_array["id"];
$title = $row->title; //$_array["title"];
$message = $row->message; //$_array["message"];
$user = (!empty($row->user))?'<a href="viewprofil.php?id='.$row->userid.'">'
.$row->name.'</a>':'$row->name';
$userid = $row->userid;
$date = $row->date; //$_array["date"];
$avatar = "<img src=\"images/avatars/$row->avatar\">";
//Array mit den Platzhaltern (Keys) und den Inhalten.
$var_array = array("ID" => $id,
"TITLE" => $title,
"DATE" => $date,
"MESSAGE" => $message,
"USERNAME" => $user,
"VISIT_USER" => $visituser,
"AVATAR" => $avatar);
//Initialisierung der Klasse und Parsen des Templates
$tpl = new parser("templates/content.tpl", $var_array);
}
//Ende von dem Wiederholenden
?>
tpl_parser.inc.php
PHP-Code:
<?php
Class parser
{
var $template;
var $temp_content;
function parser($template, $var_array)
{
$this->template = $template;
$this->temp_content = file($this->template);
$parsed = $this->rplc($var_array);
echo(implode("", $this->temp_content));
}
function rplc($var_array)
{
foreach($var_array as $key => $value)
{
//$regex[var_name] : {VARIABLE}
$regex['var_name'] = "#{[[:space:]]*?(".strtoupper($key)."){1,}?[[:space:]]*?}#si";
$this->temp_content =
preg_replace($regex['var_name'], $value, $this->temp_content);
}
}
}
?>
Kommentar