Hi,
ich hoffe diese Community kann mir bei meinem Problem einen Tipp geben.
Ich habe eine kleine Template Engine programmiert bei der mir noch eine kleine Idee fehlt und zwar wie ich einzelne Schleifen Iterationen erkenne die ausgelassen werden sollen.
Einfaches Bsp. zur Veranschaulichung:
Der erste Block A wird 20 mal wiederholt und dabei sollte nach jedem 2. A Block der Subblock A1 erscheinen
Template:
Anweisung
Die Problemmatik die sich hierbei stellt ist wie ich meine Template Engine erkennen lasse, ob der Subblock X geparst oder ausgelassen werden soll.
Meine Template Eninge ermittelt zunächst alle gültigen Blöcke mit Hilfe eines rekursiven Pattern. Und legt diese in einem Array ab:
Schema für dieses Beispiel:
Wie man erkennen kann, liegt mein einziges Problem darin Schleifen Iterationen der Template Engine begrifflich zumachen und eine performance schonende Templatezusammenstellung zu generieren.
Möglichkeiten wie die Rootblöcke in der Template File durch Template Blöcke Einfügemarken zuersetzen und dann wiederrum rekursiv zusammenzubauen fressen Performance....
Ich hoffe ihr habt für mich ein paar Ideen die mich weiterbringen bzw. neue Gedankengänge offerieren...
Vielen Dank vorab
ich hoffe diese Community kann mir bei meinem Problem einen Tipp geben.
Ich habe eine kleine Template Engine programmiert bei der mir noch eine kleine Idee fehlt und zwar wie ich einzelne Schleifen Iterationen erkenne die ausgelassen werden sollen.
Einfaches Bsp. zur Veranschaulichung:
Der erste Block A wird 20 mal wiederholt und dabei sollte nach jedem 2. A Block der Subblock A1 erscheinen
Template:
Code:
<Block A> <table> <Block A.1> <tr> <td></td> </tr> <Block A.1> </table> </Block A>
PHP-Code:
for ($i=0; $i<20; $i++)
{
$template->assign_block('A');
if ($i%2==1)
$template->assign_block('A.1');
}
Meine Template Eninge ermittelt zunächst alle gültigen Blöcke mit Hilfe eines rekursiven Pattern. Und legt diese in einem Array ab:
Schema für dieses Beispiel:
PHP-Code:
$blocks['A']='<table>{INSERT BLOCK A.1}</table>';
$blocks['A.1']='<tr><td></td></tr>';
Möglichkeiten wie die Rootblöcke in der Template File durch Template Blöcke Einfügemarken zuersetzen und dann wiederrum rekursiv zusammenzubauen fressen Performance....
Ich hoffe ihr habt für mich ein paar Ideen die mich weiterbringen bzw. neue Gedankengänge offerieren...
Vielen Dank vorab
Kommentar