Navigation Sidebar auf Ebene 2 begrenzen

Hallo

Gibt es die möglichkeit, das ich mir nur die Ebene 2 in der Sidebar anzeigen lasse und alle tieferen Ebenen in der Sidebar ignoriert werden?

Ebene 1 wird in der Top-Navigation angezeigt
Ebene 2 in der Sidebar

Ich habe schon in der Sidebar-categories.tpl geschaut, nur kann ich da keine einschrenkung in der Ebenentiefe machen. Entweder werden die subcategories aus oder eingebledet.

Würde mich über eure Hilfe freuen.

 

Danke

Also wirklich nur Ebene 2? Tiefere Ebenen auch nicht? Oder doch eher Ebene >= 2 ?

Wenn du es über eine einfache Templateanpassung lösen möchtest kannst du leider nur die Unterkategorien der aktuell aktiven Kategorie ausgeben lassen. Die anderen werden (wsl. aus Performanzgründen) nicht geladen.

Viele Grüße

Hi

Ja nur die Ebene 2.

Ebene 3 und 4 würde ich gerne über den Artikeln ausgeben lassen, aber erstmal eins nach dem anderen. :wink:

Alles klar. Dann legst du eine neue sidebar-categories.tpl in deinem eigenen Template an, die von der Elterndatei erbt. Eine Anleitung dazu gibt es hier.
In deiner Datei überschreiben wir nun den Block „frontend_index_categories_left_entry“. In der original Datei sehen wir, dass uns die Variable $level zur Verfügung steht.

Diese Block wird für jede Kateogrie aufgerufen:

{block name="frontend_index_categories_left_entry"}
  {if $level == 0 && $category.subcategories}
    {* Wenn wir uns in der obersten Ebene befinden und die Kategorie Kind-Kategorien besitzt ... *}

    {call name=categories categories=$category.subcategories level=$level+1}
    {* ... rufen wir die Funktion categories erneut auf und addieren 1 auf $level. *}
  
  {elseif $level == 1}
    {* Befinden wir uns genau in Ebene 2 (Ebene 1 wäre ja $level==0) ... *}

    {$smarty.block.parent}
    {* ... fügen wir die normale Auflistung der Kateogien ein. *}
  {/if}
  {* Ist $level > 1 passiert gar nichts*}
{/block}

Der Code ist nicht getestet sollte aber funktionieren  Sticking-out-tongue

Viele Grüße

2 Likes

Vielen Dank!

Ich greife das Thema noch einmal kurz auf.

Der Code funktioniert soweit. Nur wird in der Mobilen Ansicht leider die oberste Kategorie komplett entfernt. So was überhaupt keine Navigation existiert. 

Es wäre schön, wenn auch in der Mobilen Ansicht nur die erste ebene angezeigt wird.

 

Danke

Das wird gar nicht so einfach, da das selbe Menü für mobil und Desktop verwendet wird. Soll im mobil Menü alles im Standard bleiben würde ich von einer Anpassung der Template Dateien absehen und stattdessen alles per CSS (bzw. Less) umsetzen.

Die einzelnen Kategorien haben eine CSS Klasse „is–levelX“, wobei X für die jeweilige Ebene steht. (0 ist die Wurzel).
Daher blendest du einfach ab dem Tablet-Viewport 768px/48em  (ab diesem ist das Mobilmenü nicht mehr sichtbar), alle direkten Einträge aus. Z.B.

.sidebar-main .is--level0 > li > a{
    display: none;
}

Und danach noch alles unter Level1 auch noch mit display:none ausblenden.
Ich hoffe der Ansatz hilft dir weiter  Wink

 

Viele Grüße

2 Likes