Guten morgen liebe Community,
ich bin momentan dabei, ein neues Theme für einen Oxid Shop (4.9.6) zu entwickeln. Das Design steht weitestgehend, Probleme bereitet mir das Einpflegen der Logik.
Ein Beispiel:
Ich habe bereits eine Navigation für Telefone und Tablets geschrieben. Code wie folgt:
<ul>
<li><a href="[{$oViewConf->getHomeLink()}]">Home</a></li>
[{foreach from=$oxcmp_categories item=category_lvl_1}]
[{if $category_lvl_1->getIsVisible()}]
<li class="[{if $category_lvl_1->getExpanded()}]active[{/if}] [{if $category_lvl_1->getHasVisibleSubCats()}]sub[{/if}]"><a href="[{$category_lvl_1->getLink()}]">[{$category_lvl_1->getTitle()}]</a>
[{if $category_lvl_1->getHasVisibleSubCats()}]
<ul>
[{foreach from=$category_lvl_1->getSubCats() item=category_lvl_2}]
<li class="[{if $category_lvl_2->getExpanded()}]active[{/if}] [{if $category_lvl_2->getHasVisibleSubCats()}]sub[{/if}]"><a href="[{$category_lvl_2->getLink()}]">[{$category_lvl_2->getTitle()}]</a>
<ul>
[{foreach from=$category_lvl_2->getSubCats() item=category_lvl_3}]
<li class="[{if $category_lvl_3->getExpanded()}]active[{/if}] [{if $category_lvl_3->getHasVisibleSubCats()}]sub[{/if}]"><a href="[{$category_lvl_3->getLink()}]">[{$category_lvl_3->getTitle()}]</a></li>
[{/foreach}]
</ul>
</li>
[{/foreach}]
</ul>
[{/if}]
</li>
[{/if}]
[{/foreach}]
</ul>
Ich habe mir die Funktionen teils aus dem Azure Theme und teils über die Docs besorgt. Der Code funktioniert und tut, was er soll.
Nun sollen im oberen Teil der Seite die Hauptkategorien, in einem weiteren Menü darunter die entsprechenden Unterkategorien (erster Sublevel) der gewählten Hauptkategorie angezeigt werden. Ist eine Unterkategorie aktiv, sollen auch ihre Kinder (zweiter Sublevel) in einem dritten Menü angezeigt werden. Alle drei Menüs sind voneinander getrennt, also separate ul’s.
Probiert habe ich folgendes:
Zuerst besorge ich mir den “CategoryRoot”:
[{assign var="categoryRoot" value=$oxcmp_categories->getClickRoot()}]
[{assign var="categoryRoot" value=$categoryRoot[0]}]
Danach prüfe ich darauf und kann das Menü so bspw. auf der Hauptseite ausblenden. Später im Code iteriere ich über die Unterkategorien, die ich mir wie oben per getSubCats() hole, zeige diese an und möchte schlussendlich natürlich auch über deren Unterkategorien iterieren. Genau dies geht aber nicht.
Anzeige der Kategorien auf Sublevel 2, also bspw. /scarves/wool - funktioniert.
[{foreach from=$categoryRoot->getSubCats() item=subCat}]
[{if $subCat->getIsVisible()}]
<li class="[{if $subCat->getExpanded()}]active[{/if}]"><a href="[{$subCat->getLink()}]">[{$subCat->getTitle()}]</a></li>
[{/if}]
[{/foreach}]
Später:
Anzeige der Kategorien auf Sublevel 3, also bspw. /scarves/wool/myawesomebrand - funktioniert [I]nicht[/I].
[{foreach from=$categoryRoot->getSubCats() item=subCat}]
[{if $subCat->getIsVisible()}]
<ul class="nav-column">
[{foreach from=$subCat->getSubCats() item=sCat}]
<li class="[{if $sCat->getExpanded()}]active[{/if}]"><a href="[{$sCat->getLink()}]">[{$sCat->getTitle()}]</a></li>
[{/foreach}]
</ul>
[{/if}]
[{/foreach}]
Explizite Hilfe zu diesem Problem ist natürlich gern gesehen aber prinzipiell geht es mir eher darum, wie ich solche Probleme [I]selbst[/I] lösen kann. Gibt es abseits des Azure Themes noch weitere Resourcen, an denen ich mich orientieren könnte?
Danke für eure Antworten