template system

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • template system

    Hallo,

    ich bastel gerade an einem Template System.
    Im Template verwendete Variablen werden in einen Baum einsortiert, umd bessere übersicht zu erhalten.
    z.B. {$info.postcount}.
    Zusätzlich sollen noch schleifen eingebaut werden.
    Diese startet man mit <!--foreach|xxx.xxx--> (wobei xxx.xxx die variable angibt (muss ein array sein).
    innerhalb der schleife werden alle variablen umbenannt.
    aus:
    Code:
    <!--foreach|post-->{$title}<br/>{$content}<!--end|post-->
    wird dann beispielsweise:
    Code:
    <!--foreach|post-->
    {$post.0.title}<br/>
    {$post.0.content}
    [...]
    <!--end|post-->
    (wobei das halt beliebig ot wiederholt werden kann. und die 0 durch die entsprechende nummer ersetzt wird)
    genauso verfahre ich mit weiteren schleifen (schleifennamen werden auch verändert), falls sich welche innerhalb der oberen schleife befinden.

    Das problem ist, dass die Variablen in der INNEREN schleife schon von der AUSSEREN schleife veraendert wurden. Wenn dann also die innere schleife bearbeite, kommen falsche variablennamen dabei raus.
    Ein Beispiel:
    Code:
    <!--foreach|topic-->
    <hr/>
    {$title}
    <!--foreach|post-->
    {$name}: {$content}<br/>
    <!--end|post-->
    
    <!--end|topic-->
    daraus solle eigentlich folgendes werden:
    Code:
     
    <!--foreach|topic-->
    <hr/>
    {$topic.0.title}
    <!--foreach|topic.0.post-->
    {$topic.0.post.0.name}: {$topic.0.post.0.content}<br/>
    [...]
    <!--end|post-->
    [...]
    <!--end|topic-->
    Statt dessen wir daraus folgendes:
    Code:
     
    <!--foreach|topic-->
    <hr/>
    {$topic.0.title}
    <!--foreach|topic.0.post-->
    {$topic.0.post.0.[B]topic.0.[/B]name}: {$topic.0.post.0.[B]topic.0.[/B]content}<br/>
    [...]
    <!--end|post-->
    [...]
    <!--end|topic-->
    Wie soll ich verhindern, dass die aeussere schleife schon die variablen der inneren schleife verändert ?
    Problematischer wird das ganze noch dadurch, dass ich das template passiv parse. also die variablen durchgehe und falls dort ein array drin ist, das template nach genau dem array durchsuchen. nicht umgekehrt.

    Ich hoffe das ist verständich.
    Danke
    Dennis
Lädt...
X