Linkes Menü: nur aktive Kategorie und Subkategorie anzeigen

Hallo, ich versuche momentan das linke Menü sinnvoll zu nutzen. Da die Hauptkategorien schon im Topmenü angezeigt werden, sollen diese links nicht wiederholt werden. Ich bin schon (dank pbiendl in templates-und-design-f57/linkes-kategorie-menu-um-eine-ebene-nach-unten-verschieben-t14312.html) so weit, dass die oberste Ebene nicht mehr angezeigt wird. Die categories_left.tpl sieht wie folgt aus: [code]{* Maincategories left *}

{function name=categories level=0}
{block name=“frontend_index_categories_left_ul”}{/block}
{foreach from=$categories item=category}
{if $category.subcategories}
{call name=categoriessub categories=$category.subcategories level=0}
{/if}
{/foreach}
{/function}

{function name=categoriessub level=0}

    {block name="frontend_index_categories_left_ul"}{/block} {foreach from=$categories item=category}
  • {$category.description} {if $category.subcategories} {call name=categoriessub categories=$category.subcategories level=$level+1} {/if}
  • {/foreach}
{/function}

{if $sCategories}
{call name=categories categories=$sCategories}
{elseif $sMainCategories}
{call name=categories categories=$sMainCategories}
{/if}

[/code] Nun werden neben der aktiven Subkategorie und deren Kategorien auch die nicht aktiven Subkategorien angezeigt. Wie im verlinkten Thread lässt sich dies wie folgt darstellen: [code]Ebene 2a Ebene 2b |-\> Ebene 3a |-\> Ebene 3b Ebene 2c[/code] Die oberste Kategorieebene, Ebene 1, wird also nicht angezeigt. Mein Ziel ist es nun aber auch die inaktiven Kategorien auf Ebene 2 verschwinden zu lassen. Also in etwa so: [code]Ebene 2b |-\> Ebene 3a |-\> Ebene 3b[/code] Hat mir hierzu vielleicht jemand einen Tipp wie ich das umsetzen kann? Herzlichen Dank vorab und beste Grüße, Internet

Hallo Internet, bist du auf deiner Suche schon weiter gekommen? Ich stehe gerade vor demselben Problem. Wenn die Kategorie angeklickt wird, sollte auch die gesamte Unterkategorie angezeigt werden. Wenn die Subkategorie ausgewählt wird, sollte nur die aktive Kategorie + Subkategorie sichtbar sein. Allerdings lässt es sich nicht filtern, wenn die Subkategorie noch Vorgänger hat, denn dann werden diese Vorgänger auch angezeigt und erst nach der aktiven Kategorie kommt der {break} zum Tragen. Würde mich freuen, wenn du da eine Lösung gefunden oder einen Denkansatz hast.

Hi Tipo, ich selber steige da nicht mehr durch. Ich lass es gerade machen. Sobald es bei mir funktioniert poste ich Dir meine categories_left.tpl hier. Viele Grüße, Internet

Hi Tipo, nachfolgend ist meine categories_left.tpl. Bei mir wird das Menü nun wie gewünscht dargestellt. [code]

{function categories level=0 }

{block name="frontend_index_categories_left_ul"}{/block}

{foreach $categories as $category}

  {if $category.attribute.attribute1 == 'jacques'}
    {$blog_id = ''}
  {else}
    {$blog_id = 'blog'}
  {/if}

  {*	Blogseiten im linken Menue verbergen *}	
  {if $category.attribute.attribute1 != $blog_id}

    {if ($category.flag or $category.subcategories) and $level <= 3}

{* {if ($category.flag or $category.subcategories) and $level < 2} *}

      <li class="active{if $category.subcategories} sub{/if}">

        <a href="%7Bif%20%24category.external%7D%7B%24category.external%7D%7Belse%7D%7B%24category.link%7Crewrite:%24category.description%7D%7B/if%7D" class="flag{if $category.subcategories} active{/if}">
          {$category.description}
        </a>

        {if $category.flag} {$m1 = $level} {/if}

        {if $category.subcategories}
          {call name=categories categories=$category.subcategories level=$level+1}
        {/if}
      </li>
    {/if}
  {/if}
{/foreach}

{foreach $categories as $category}

    {if (!$category.flag and $level &gt; 0 and !$category.subcategories) or $level &gt;= 3}
      <li>
        {if $m1 != $level }
          {if $category.attribute.attribute1 != 'blog'}

            <a href="%7Bif%20%24category.external%7D%7B%24category.external%7D%7Belse%7D%7B%24category.link%7Crewrite:%24category.description%7D%7B/if%7D" class="sub{if $category.subcategories} active{/if}">
              {$category.description}
            </a>
          {/if}
        {/if}

        {if $category.subcategories}
          {call name=categories categories=$category.subcategories level=$level+1}
        {/if}
      </li>
    {/if}
{/foreach}
{/function}

{if $sCategories}
{call name=categories categories=$sCategories}
{elseif $sMainCategories}
{call name=categories categories=$sMainCategories}
{/if}

[/code] Zudem wollten wir die categories\_left auch noch dazu nehmen um auf der Blog-Seite ein gesondertes Blog-Menü anzuzeigen, bzw. beliebige Links (da meine Blogeinträge in Wirklichkeit Shopseiten sind). Das geht aber leider noch nicht. Lass es mich wissen ob das Menü bei Dir wie gewünscht funktioniert. Viele Grüße

Hallo Zusammen, wir haben ein Plugin entwickelt, welches nur die aktiven Kategorien inkl. Unterkategorien anzeigen lässt. Es werden dann nur Haupkategorien mit den dazugehörigen Unterkategorien in der linken Sidebar erscheinen. Dazu haben Sie auch noch verschieden einstell Möglichkeiten. Hier ein Link Dazu: für das Shopware Responsive Template" von Conexco Plugin für das Standard-Template (Emotion) von Shopware: Nur aktive Kategorien im Shop

Hallo, schau mal hier Nur aktive Kategorien im linken Menü [quote=“Internet”]Hallo, ich versuche momentan das linke Menü sinnvoll zu nutzen. Da die Hauptkategorien schon im Topmenü angezeigt werden, sollen diese links nicht wiederholt werden. Ich bin schon (dank pbiendl in templates-und-design-f57/linkes-kategorie-menu-um-eine-ebene-nach-unten-verschieben-t14312.html) so weit, dass die oberste Ebene nicht mehr angezeigt wird. Die categories_left.tpl sieht wie folgt aus: [code]{* Maincategories left *}

{function name=categories level=0}
{block name=“frontend_index_categories_left_ul”}{/block}
{foreach from=$categories item=category}
{if $category.subcategories}
{call name=categoriessub categories=$category.subcategories level=0}
{/if}
{/foreach}
{/function}

{function name=categoriessub level=0}

    {block name="frontend_index_categories_left_ul"}{/block} {foreach from=$categories item=category}
  • {$category.description} {if $category.subcategories} {call name=categoriessub categories=$category.subcategories level=$level+1} {/if}
  • {/foreach}
{/function}

{if $sCategories}
{call name=categories categories=$sCategories}
{elseif $sMainCategories}
{call name=categories categories=$sMainCategories}
{/if}

[/code] Nun werden neben der aktiven Subkategorie und deren Kategorien auch die nicht aktiven Subkategorien angezeigt. Wie im verlinkten Thread lässt sich dies wie folgt darstellen: [code]Ebene 2a Ebene 2b |-\> Ebene 3a |-\> Ebene 3b Ebene 2c[/code] Die oberste Kategorieebene, Ebene 1, wird also nicht angezeigt. Mein Ziel ist es nun aber auch die inaktiven Kategorien auf Ebene 2 verschwinden zu lassen. Also in etwa so: [code]Ebene 2b |-\> Ebene 3a |-\> Ebene 3b[/code] Hat mir hierzu vielleicht jemand einen Tipp wie ich das umsetzen kann? Herzlichen Dank vorab und beste Grüße, Internet[/quote]

Hallo, wir haben eine Lösung gefunden :slight_smile: Schau mal hier: Aktive Kategorien und Unterkategorien In diesem Plugin hast du auch noch ander möglichkeiten die du verwenden kannst! [quote=„Tipo“]Hallo Internet, bist du auf deiner Suche schon weiter gekommen? Ich stehe gerade vor demselben Problem. Wenn die Kategorie angeklickt wird, sollte auch die gesamte Unterkategorie angezeigt werden. Wenn die Subkategorie ausgewählt wird, sollte nur die aktive Kategorie + Subkategorie sichtbar sein. Allerdings lässt es sich nicht filtern, wenn die Subkategorie noch Vorgänger hat, denn dann werden diese Vorgänger auch angezeigt und erst nach der aktiven Kategorie kommt der {break} zum Tragen. Würde mich freuen, wenn du da eine Lösung gefunden oder einen Denkansatz hast.[/quote]

Hat jemand einen Lösungsansatz für Shopware 5 mit responsive Layout?

@squadhousemedia schrieb:

Hat jemand einen Lösungsansatz für Shopware 5 mit responsive Layout?

 

Ich habe hier mal was reingestellt bei dem der Code im Template bei Shopware5 responsives Template nicht angefasst werden muss und rein mit Less funktionieren sollte. >http://forum.shopware.com/discussion/comment/155882/#Comment_155882

Gruß Uwe

Hallo,

da Shopware bisher meines Wissens keinen einfachen Zugriff auf die Unterkategorien der aktuellen Kategorie zulässt und nicht jeder per Plugin / PHP-Code diese Funktion hinzufügen möchte, habe ich hier eine einfache rekursive Variante in Form einer Smarty-Funktion, um die aktuelle Kategorie in der Liste der $sCategories bzw. $sMainCategories zu finden:

{function name=findCategory categoryId=0}
    {foreach from=$categories item=category}
        {if $category.id == $categoryId}

            {if $category.subcategories && $category.subcategories|@count}
                
                    {foreach $category.subcategories as $subcategory}
                        {$subcategory.name}
                    {/foreach}
                
            {/if}

        {elseif $category.subcategories}
            {call name=findCategory categories=$category.subcategories categoryId=$categoryId}
        {/if}
    {/foreach}
{/function}

{if $sCategories}
    {call name=findCategory categories=$sCategories categoryId=$sCategoryCurrent}
{elseif $sMainCategories}
    {call name=findCategory categories=$sMainCategories categoryId=$sCategoryCurrent}
{/if}

 

Viele Grüße,
Stefan

@stefanullinger schrieb:

Hallo,

da Shopware bisher meines Wissens keinen einfachen Zugriff auf die Unterkategorien der aktuellen Kategorie zulässt und nicht jeder per Plugin / PHP-Code diese Funktion hinzufügen möchte, habe ich hier eine einfache rekursive Variante in Form einer Smarty-Funktion, um die aktuelle Kategorie in der Liste der $sCategories bzw. $sMainCategories zu finden:

{function name=findCategory categoryId=0}
{foreach from=$categories item=category}
{if $category.id == $categoryId}

{if $category.subcategories && $category.subcategories|@count}

{foreach $category.subcategories as $subcategory}
{$subcategory.name}
{/foreach}

{/if}

{elseif $category.subcategories}
{call name=findCategory categories=$category.subcategories categoryId=$categoryId}
{/if}
{/foreach}
{/function}

{if $sCategories}
{call name=findCategory categories=$sCategories categoryId=$sCategoryCurrent}
{elseif $sMainCategories}
{call name=findCategory categories=$sMainCategories categoryId=$sCategoryCurrent}
{/if}

 

Viele Grüße,
Stefan

Dann schau mal bitte ob deine Änderung auch noch in der mobilen Ansicht funktioniert, da ja die Hauptnavigation wer fällt könntest du vielleicht Probleme bekommen 

Und dann weiß ich noch nicht so recht was wir alle mit den Code anfangen sollen und für was er sein bzw. wo der rein soll und was er gewirkt.

Uwe

Hallo Uwe,

da wir das Standard-Responsive-Theme (bzw. Bare) aufgrund seiner schlechten Code-Struktur nicht nutzen, kann ich lediglich einen Code-Schnipsel bereitstellen.
Ich wollte mit meinem Beitrag lediglich einen Denkanstoß bieten und zeigen, dass man nicht für jede Kleinigkeit ein überteuertes Plugin kaufen muss.

 

Und dann weiß ich noch nicht so recht was wir alle mit den Code anfangen sollen und für was er sein bzw. wo der rein soll und was er gewirkt.

Schritt 1 wäre sicherlich eine Child-Theme vom Responsive-Theme zu erstellen und das Listing-Template zu überschreiben / zu erweitern. Der Code gibt lediglich alle Untermenüpunkte der aktuellen Kategorie aus.

Wenn wir dir / euch bei dem Bau eines Shops unterstützen können, melde dich gerne per E-Mail bei uns – wir sind eine kleine Webagentur aus Berlin.

Viele Grüße,
Stefan