("Woher weiß die Tabelle, dass sie sich auch dauernd wiederholen muss, obwohl sie nicht in dieser Schleife ist?")
Naja, dass gibst du halt im Template selber mit an. Du makierst halt den Beginn der Tabelle und das Ende der Tabelle.
Code:
//In einem Phantasietemplate könnte das wie folgt aussehen
<table>
{-foreach 'select * from tabelle where inhalt <> ""'-}
<tr>
<tb>{-inhalt-der-datenbank-}</tb>
</tr>
{-end of foreach-}
</tabelle>
In der Templateengine, die ich verwende, funktioniert das z.b. ein wenig anders. Bsp:
Code:
//Tempalte Metatext.html
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta http-equiv="Cache-Control" content="no-cache" />
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<meta name="generator" content="<cmd: call kernel with Version>" />
<meta name="revisit-after" content="7 days" />
<meta name="robots" content="index,follow,noarchive" />
<cmd: foreach getConf with metatext>
Am Ende dieses Templates wird halt eine Foreach Schleife ausgeführt. Im Hintergrund funktioniert das nun so, dass er die Funktion getConf aufruft, aps parameter "metatext" übergibt, und für jeden Eintrag, den das array zurückgibt, das Element Metatext.html aufruft und den Inhalt einträgt.
Code:
//Das Element Metatext.html
<meta name="<cmd: call getTemp with key>" content="<cmd: call getTemp with value>" />
Sinn dieser Engine war es, drei verschiedene Arten von "Templates" zu kreieren. Einmal Sites, Templates und Elements. Mit jenen wird dann im Code unterschiedlich umgegangen.