rethus hat geschrieben:Wow, 104 MB Navigation, das is ne Menge Holz
.
Das ging am Ende weiter, als mehr Speicher zur Verfügung gestellt wurde.
Ich vermute, das sich da irgend eine WHILE oder FOR-Schleife in die "endlose" begeben hat...
Genau so sah es aus.
Es muss an diesem hier gelegen haben:
Code: Alles auswählen
{include file="navigation_main/template/get.tpl"
tree=$wrapper.subcats path=$path ulId=""}
Als ich es in einem neueren Modul etwas anders aufgebaut anders sah, habe ich das eingebunden:
Code: Alles auswählen
{if $idcat|in_array:$path and !empty($wrapper.subcats)}
{include file="navigation_main/template/get.tpl" tree=$wrapper.subcats path=$path ulId=""}
{/if}
Da wird erst abgefragt, ob denn überhaupt Unterkategorien da sind.
Was mir hier absolut nicht gefällt, das ist der feste Pfad.
Wenn man dann mal ein Template oder den Modulnamen wechseln will, muss man es hier auch anders vertexten.
Ich werde das bei meinen Menü-Modulen mit meinem Template-Chooser verknüpfen und den Template-Pfad per Platzhalter übergeben.
dann könntest du mit nem Profiling mal ganz genau nachsehen, wo es da im Argen liegt.
Naja, ich hab am Modul zuerst das $path dazu eingebaut
Code: Alles auswählen
{if $idcat|in_array:$path}
{assign var="aClass" value='active'}
{else}
{assign var="aClass" value=''}
{/if}
und dann dieses was ich oben beschrieben habe und dann war out of memory.
Dann habe ich diese if in_array(path) darum herum gebaut und dann war wieder gut.
Wobei, mir fällt gerade ein, die ein oder andere Navi ist via Smarty recursiv programmiert.
Es sind eigentlich nur foreach-Schleifen.
Aber wenn die mit dem gleichen Template nochmal aufgerufen werden...
Ich glaube, ich habe den Fehler:
Bei meinem Modul werden mehrere Kategorie-Bäume ausgelesen und mittels Smarty über eine weitere foreach-Schleife ausgelesen, die über dem kompletten Template steht, quasi als Wrapper.
Erst darin befindet sich die normale Schleife mit dem $tree.
Wenn Smarty eine Subcat findet, baut es das Template nochmal ein und versucht nochmal die ganz große Schleife zu fahren.
Hab es gerade nicht auswendig im Kopf (müsste eigentlich der test auf subkategorien sein)... wenn die da sind, ruft er ein Smarty-Sub-Template auf.
Vielleicht erzeugt das deine Endlosschleife?!
Das ist es vermutlich, aber dort wird kein Sub-Template aufgerufen sondern das normale.
Wobei aber $tree mit den Unterkategorien belegt wird.
Das geht solange im Standardmodul gut, weil dort dann $tree mit Subcats belegt ist und sich sonst nichts ändert.
Aber in meinem Fall wird im großen Supertree
item=tree gesetzt, womit wir wieder beim Anfang sind.
Usw.
Das läuft jetzt nur deshalb, weil ich das Standardtemplate ausgewählt habe und nicht meines für den Supertree.
Was nun? Mit zwei Templates fahren? Oder kann man Smarty beibringen, dass es sich gerade in einer Rekursion befindet?
Fliegt der Bauer übers Dach, ist der Wind weißgott nicht schwach.