Template System - if, while usw

js-mueller

Erfahrenes Mitglied
Hi

ich möchte mir gerne mein eigenes Template System bauen. Ich hab bei smarty geshend as man da if abfragen einbauen kann, while schleifen usw.
Wie kann man das in seinem eigenen template realisieren?
Ich hoffe ihr könnt mir einige brauchbare Tipps geben.
 
Wenn du dein Problem genauer spezifizieren würdest, dann könnte man dir vielleicht leichter helfen.

Du willst dir ein eigenes Template-System erstellen?
Eine eigene Template-Class erstellen?
if, for, while, switch Befehle benutzen?
Willst du einen Block (template) öfters parsen?

Schreib doch ein bisschen darüber, was es werden soll, was es können soll, was du dir wünscht, wo du dich nicht auskennst, usw. Schreib lieber zuviel und erkläre auch gerne zu genau, dann tun wir uns leichter ;) - Danke
 
Also folgendes :)

Mein Template im Moment verarbeitet die templates so:

<!-- Tabellen Kopf -->
<table ....>
<!-- Tabellen Kopf -->

<!-- Tabellen Inhalt -->
<tr>
<td>{wert1}</td>
<td>{wert2}</td>
</tr>
<!-- Tabellen Inhalt -->

<!-- Tabellen Fuss -->
</table>
<!--Tabellen Fuss -->

Mit meinem template system lad ich die einzelnen abschnitte iun und gebe sie aus. Tabellen Inhalt wird dabei in php in eine while schleife gesetzt, damit auch alle beitraege ausgelesen werden.

So mein neues Template System soll folgendes verarbeiten:

<table ....>
{while1}
<tr>
<td>{wert1}</td>
<td>{wert2}</td>
</tr>
{while1}
</table>

Es soll folgendermaßen funktionieren. Im php Skript sind verschiedene while schleifen festgelegt, die der Designer im Template verwenden kann. Beispiel while1 while 2 usw.
Nur ich weiss nicht wie ich das bewerkstelligen soll, weil das Template wird ja als ganzes eingelesen und nicht mich in Abschnitten.
Das heisst während der while schleife müsste ich die Ausgabe irgendwie unterbrechen und dann weiterführen.
Das ist mir nicht so ganz klar wie das gehen soll.

Ich hoffe ich hab mich jetzt verständlicher Ausgedrückt
 
Da würd ich an deiner Stelle aber gleich auf die IT-Class (Integrated Templates) zurückgreifen.

Damit kannst du z.B. folgendes tun:
Erstellen des html-templates aus mehrer einzelnen html-files.Aus welchen Templates es besteht kannst du ja dann z.B. mit einem langen switch machen.

Diese "Master"-Template schaut dann z.B. so aus:
Code:
<html>
 blablabla
 blablabla
 <!-- BEGIN BLOCK1 -->
  <table>
   <tr>
    <td>{VAR1}</td>
   </tr>
  </table>
 <!-- END BLOCK1 -->
 blablabla
 blablabla 
 <!-- BEGIN BLOCK2 -->
  <table>
   <tr>
    <td>{VAR2}</td>
   </tr>
  </table>
 <!-- END BLOCK2 -->
 blablabla
 blablabla 
 <!-- BEGIN BLOCK3 -->
  <table>
   <tr>
    <td>{VAR3A}{VAR3C}{VAR3B}</td>
   </tr>
  </table>
 <!-- END BLOCK3 -->
 blablabla
</html>
diese Blöcke kannst du dann nach Lust und Laune mehrmals, einfach, oder garnicht parsen(ausgeben lassen). Das geht natürlich mit while, if, ...

Also wieso das Rad neu erfinden ;-)

Wie das funktioniert ist folgendes:
das Template wird in als String geladen, die Blöcke beginnen immer mit <!-- BEGIN BLOCKx --> und enden mit <!-- END BLOCKx -->. So kann man sie "angreifen"

Blöcke die nicht gebraucht werden(in denen keine Variable spezifiziert wurde) werden am Ende entfernt. Blöcke die du verwenden möchtest spricht man so an:
Code:
for($i = 0; $i<2; $i++){
    $tpl->setCurrentBlock("BLOCK1");
    $tpl->setVariable("VAR1", $var1)
    $tpl->parseCurrentBlock("BLOCK1");
}
//so wird der Block1 2 mal ausgefüllt

Wenn du interesse daran hast, schick mir eine KN oder schreibs in den thread. (Bin aber erst wieder ab Mi. wieder am I-net)

ich hoffe ich habs richtig verstanden *umdieEckeguck*
 
Naja ich wollt das rad schon ganz gerne neu erfinden ;-)
Einfach darum um was zu lernen. Außerdem kann ich es dann besser an mich anpassen
 
Dann kann ich dir, wenn du möchtest ja mal die IT-Class schicken. Damit du dir anschauen kannst, wie das so funktioniert. Ich möcht aber auf keinem Fall aufdrängen;)
 
Zurück