Menü nur bis zu zweiten Ebene

Hallo Leute,

ich wollte mal fragen ob es eine Möglichkeit gibt das Laden (abfrage) des Kategorie-Menüs (category_tree.tpl) nur bis zu zweiten Ebene zu erlauben. Also Hauptkategorie + 1. Unterkategorie.

Im Moment blende ich weitere Unterkategorien einfach per CSS aus aber geladen werden diese natürlich trotzdem, was bei unserer Shopstruktur nicht wenig perfomance kostet.

Grüße!

sicher, jede Ebene wird in einer Foreach-Schleife geladen.
der Code sieht irgendwie so aus: (fiktiv)


[{$oView->KategorienLaden()}]
[{foreach from $oView->KategorienLaden() as $kategorie}]
  der Menüpunkt für die Oberkategorie
    [{if $kategorie hat unterkategorien}]
      [{foreach unterkategorien der hauptkategorie}]
        erste unterkategorie
          [{if Unterkategorie hat Unterkategorien}]
            [{foreach ...  <- das ist die "tiefste" foreach schleife für die 3.Ebene }]
              xxx 2. unterkategorienebene
            [{/foreach}]
          [{/if}]
        [{/foreach}]
      [{/if}]
....
..

  [{/foreach}]

Wenn da also eine Eben zu viel ist, müsstest du nur die “tiefste” foreach-Schleife auskommentieren

Also in der “category_tree.tpl” habe ich nur eine foreach-schleife oder ist noch eine andere datei für die Ausgabe verantwortlich?

So sieht meine “category_tree.tpl” aus.

[{if $tree || $oView->getContentCategory() }]
[{assign var=“oContentCat” value=$oView->getContentCategory() }]
[{defun name=“category_tree” tree=$tree act=$act class=$class testSubCat=’’}]
[{strip}]
<ul [{if $class}]class="[{$class}]"[{/if}]>
[{foreach from=$tree item=ocat key=catkey name=$test_catName}]
[{if ( !$ocat->isTopCategory() || !$oView->showTopCatNavigation() ) && $ocat->getContentCats() }]
[{foreach from=$ocat->getContentCats() item=ocont key=contkey name=cont}]
<li><a id=“test_BoxLeft_Cms_[{if $ocat->isTopCategory()}][{$ocat->oxcategories__oxid->value}][{$smarty.foreach.cont.iteration}][{else}][{$testSubCat}]sub[{$smarty.foreach.cont.iteration}][{/if}]" href="[{$ocont->getLink()}]" class="[{if $ocat->isTopCategory()}]root[{/if}][{if $oContentCat && $oContentCat->getId()==$ocont->getId()}] act last[{/if}]">[{ $ocont->oxcontents__oxtitle->value }]</a></li>
[{/foreach}]
[{/if}]
[{if $ocat->getIsVisible() }]
<li>
<a id="test_BoxLeft_Cat
[{if $ocat->isTopCategory()}][{$ocat->oxcategories__oxid->value}]
[{$smarty.foreach.$test_catName.iteration}][{else}][{$testSubCat}]_sub[{$smarty.foreach.$test_catName.iteration}][{/if}]” href="[{$ocat->getLink()}]" class="[{if $ocat->isTopCategory()}]root [{/if}][{if $ocat->hasVisibleSubCats}][{if $ocat->expanded }]exp [{/if}]has [{else}]last [{/if}][{if isset($act) && $act->getId()==$ocat->getId() && !$oContentCat }]act [{/if}]">[{$ocat->oxcategories__oxtitle->value}] [{if $ocat->getNrOfArticles() > 0}] ([{$ocat->getNrOfArticles()}])[{/if}]</a>
[{if $ocat->getSubCats() && $ocat->expanded}]
[{fun name=“category_tree” tree=$ocat->getSubCats() act=$act class="" testSubCat=$ocat->oxcategories__oxid->value }]
[{/if}]
</li>
[{/if}]
[{foreachelse}]
[{if $oContentCat }]
<li><a id=“test_BoxLeft_Cms_0” class=“root act” href="[{$oContentCat->getLink()}]">[{ $oContentCat->oxcontents__oxtitle->value }]</a></li>
[{/if}]
[{/foreach}]
</ul>
[{/strip}]
[{/defun}]
[{/if}]

Und danke schon mal :slight_smile:

ps: ach du Kacke ist das übel formatiert … sry!

Wenn ich folgende Zeile auskommentiere:

        [{if $ocat-&gt;getSubCats() && $ocat-&gt;expanded}]
            [{fun name="category_tree" tree=$ocat-&gt;getSubCats() act=$act class="" testSubCat=$ocat-&gt;oxcategories__oxid-&gt;value }]
        [{/if}]

dann gibt er nur noch die Hauptkategorie aus und leider nicht mehr die erste Unterkategorie

ööhh ist das OXID 4.4.x?

Es ist Oxid 4.5.2

http://forum.oxid-esales.com/showthread.php?t=14562#post90664

Danke! Werde ich mal versuchen.