in der linken Box nur Unterkategorie anzeigen

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
Vlt. hilft dann folgender Ansatz weiter:
Statt der /boxes/box_categories.tpl wird in einem Child-Template die /snippets/categories_recursive.tpl geändert.
Die Zeilen 43 - 57
HTML:
<li{if $category->kKategorie == $activeId || ((isset($activeParent) && isset($activeParent->kKategorie)) && $activeParent->kKategorie == $category->kKategorie)} class="active"{/if}>
    <a href="{$category->cURL}"{if $hasItems} class="nav-sub"{/if} data-ref="{$category->kKategorie}">
        {$category->cName}
        {if $hasItems}<i class="fa fa-caret-{$caret} nav-toggle pull-right"></i>{/if}
    </a>
    {if $hasItems}
        <ul class="nav">
            {if !empty($category->Unterkategorien)}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents}
            {else}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents}
            {/if}
        </ul>
    {/if}
</li>
wie folgt ändern:
HTML:
{if isset($inPath) || $category->kKategorie == $activeId}
<li{if $category->kKategorie == $activeId || ((isset($activeParent) && isset($activeParent->kKategorie)) && $activeParent->kKategorie == $category->kKategorie)} class="active"{/if}>
    <a href="{$category->cURL}"{if $hasItems} class="nav-sub"{/if} data-ref="{$category->kKategorie}">
        {$category->cName}
        {if $hasItems}<i class="fa fa-caret-{$caret} nav-toggle pull-right"></i>{/if}
    </a>
    {if $hasItems}
        <ul class="nav">
            {if !empty($category->Unterkategorien)}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents inPath=1}
            {else}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents inPath=1}
            {/if}
        </ul>
    {/if}
</li>
{else}
    {if !empty($category->Unterkategorien)}
        {include file='snippets/categories_recursive.tpl' i=$i categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents}
    {else}
        {include file='snippets/categories_recursive.tpl' i=$i categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents}
    {/if}
{/if}
Zur Beachtung!!! Von dieser Änderung ist dann auch die Anzeige des Kategoriemenüs in der mobilen Ansicht betroffen. Dort kann dann nicht mehr in die übergeordneten Kategorien navigiert werden!
Um das zu verhindern müßte auch noch die /layout/header_xs_nav.tpl angepasst und dort in der Zeile mit dem include für die categories_recursive.tpl der Parameter inPath=1 ergänzt werden.
 
Zuletzt bearbeitet:

WhiteDragon

Aktives Mitglied
11. November 2014
99
0
Wow, das ist bisher die beste Lösung, die ich von allen hier gesehen habe.
Vielen Dank für deine wirklich ausführliche Hilfe. 🙂

Ein paar Rückfragen habe ich dazu - Ich hab das ganze Mal probiert:
1. Mit "... die /boxes/categories_recursive.tpl..." meinst du -> /snippets/categories_recursive.tpl ? Nur dort bin ich fündig geworden.
2. Nebenkategorien werden bei mir (ich meine) ab 5. Ebene nur nicht mehr angezeigt. Allgemein 1-2 Oberkategorie wird meistens bei mir nicht angeezeigt. Muss dazu noch was anderes eingestellt werden?
3. Mobil werden wir bei mir gar keine Kategorien mehr angezeigt, selbst wenn ich das einfüge auch nicht -> Parameter inPath=1.
 
Zuletzt bearbeitet:

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
Hallo,
ich habe das gerade nochmal mit einem 4.04er Shop getestet.
zu 1.: Ich meine natürlich die /snippets/categories_recursive.tpl
zu 2.: Nach der Templateänderung muss ggfs. der Templatecache gelöscht werden, damit alle Änderungen korrekt angezeigt werden.
zu 3.: Die Zeile 60 in /layout/header_xs_nav.tpl sollte dann so aussehen:
HTML:
{include file='snippets/categories_recursive.tpl' i=0 categoryId=0 limit=2 caret='right' inPath=1}
Kategorien werden in der mobilen Ansicht auch nur über das "Bürger"-Menü angezeigt. Dort sollten sie aber mit der Änderung normal angezeigt werden. Ggfs. auch hier nochmal den Templatecache leeren.
 
  • Gefällt mir
Reaktionen: bzng

3jojojo

Sehr aktives Mitglied
20. Januar 2016
783
45
Hallo,
ich habe das gerade nochmal mit einem 4.04er Shop getestet.
zu 1.: Ich meine natürlich die /snippets/categories_recursive.tpl
zu 2.: Nach der Templateänderung muss ggfs. der Templatecache gelöscht werden, damit alle Änderungen korrekt angezeigt werden.
zu 3.: Die Zeile 60 in /layout/header_xs_nav.tpl sollte dann so aussehen:
HTML:
{include file='snippets/categories_recursive.tpl' i=0 categoryId=0 limit=2 caret='right' inPath=1}
Kategorien werden in der mobilen Ansicht auch nur über das "Bürger"-Menü angezeigt. Dort sollten sie aber mit der Änderung normal angezeigt werden. Ggfs. auch hier nochmal den Templatecache leeren.

Klappt alles super und vielen Dank für die geniale Erweiterung. Nur ein Problem habe ich dabei. Auf mobilen Geäten wird das Navmenü nur noch die Oberkategorie angezeigt. Die Unterkategorien fehlen leider. Trotz der Erweiterung in punkt 3.
habe auch schon
{include file='snippets/categories_recursive.tpl' i=0 categoryId=0 limit=4 caret='right' inPath=1} probiert aber ohne Erfolg. KAnnst du mir sagen wieso?
 

FPrüfer

Moderator
Mitarbeiter
19. Februar 2016
1.881
529
Halle
OK, für die korrekte Funktion im Mobile-Menü muss das inPath=1 auch noch in der snippets/categories_offcanvas.tpl in Zeile 9 ergänzt werden.
HTML:
{include file='snippets/categories_recursive.tpl' i=0 categoryId=$result->current->kKategorie limit=2 caret='right' inPath=1}
 

SC-Holz

Aktives Mitglied
23. Mai 2016
2
0
Hallo,
Ich möchte die Kategorien weiter zum filtern benutzen. Im Moment ist es so das alle Kategorien ausblendet sind und nur noch die letzte aktive ersichtlich bleibt. Ist es möglich, dass in der letzten aktiven Unterkategorie (z.B. in Tiefe 1) + die selben nichtaktiven Unterkategorien (Tiefe 1) stehen bleiben?

zum Beispiel:

(Hauptkategorie): > Nussknacker -> ausgeblendet

(Unterkategorie Tiefe 1) >> gemusterte Nussknacker -> soll auch noch in der Kategorie-box ersichtlich sein
(Unterkategorie Tiefe 1) >>> einfarbige Nussknacker -> diese ist aktiv
(Unterkategorie Tiefe 1) >> Nussknacker zum personalisieren -> soll auch noch in der Kategorie-box ersichtlich sein


Ich benutze die Shopversion4.05 (Build: 2).
 
Zuletzt bearbeitet:

Baltazar80

Gut bekanntes Mitglied
18. Januar 2014
279
17
Hallo,

das Thema ist schon etwas älter, aber mich würde es auch interessieren, ob es möglich ist, dass in der aktuell gewählen Unterkategorie and noch die weiteren Unterkategorien mit angezeigt werden.
Aktuell ist is so, wenn ich eine Unterkategorie auswähle werden alle anderen Unterkategorien ausgeblendet, dann müsste man zurück navigieren um eine andere Unterkategorie auswählen zu können.

Wir benutzen aktuell die Lösung von FPrüfer, nur eben mit der genannten Problem.

Kategorie 1
- Unterkategorie 1
- Unterkategorie 2
- Unterkategorie 3
- Unterkategorie 4


Also wenn ich jetzt Unterkategorie 2 Auswähle, werden alle anderen Unterkategorien ausgeblendet, gibt es eine Möglichkeit diese weiterhin anzeigen zu lassen?
 
Zuletzt bearbeitet:

M.Dziurosz

Aktives Mitglied
31. Januar 2019
5
0
Hallo,

wenn ich dein Problem richtig verstanden habe dann probier mal die Zeile

{if isset($inPath) || $category->kKategorie == $activeId}

durch

{if isset($inPath) || $category->kKategorie == $activeId || $category->kKategorie == $activeParent->kKategorie}

zu ersetzen.


Viele Grüße
 

snot

Aktives Mitglied
5. April 2018
12
3
Vlt. hilft dann folgender Ansatz weiter:
Statt der /boxes/box_categories.tpl wird in einem Child-Template die /snippets/categories_recursive.tpl geändert.
Die Zeilen 43 - 57
HTML:
<li{if $category->kKategorie == $activeId || ((isset($activeParent) && isset($activeParent->kKategorie)) && $activeParent->kKategorie == $category->kKategorie)} class="active"{/if}>
    <a href="{$category->cURL}"{if $hasItems} class="nav-sub"{/if} data-ref="{$category->kKategorie}">
        {$category->cName}
        {if $hasItems}<i class="fa fa-caret-{$caret} nav-toggle pull-right"></i>{/if}
    </a>
    {if $hasItems}
        <ul class="nav">
            {if !empty($category->Unterkategorien)}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents}
            {else}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents}
            {/if}
        </ul>
    {/if}
</li>
wie folgt ändern:
HTML:
{if isset($inPath) || $category->kKategorie == $activeId}
<li{if $category->kKategorie == $activeId || ((isset($activeParent) && isset($activeParent->kKategorie)) && $activeParent->kKategorie == $category->kKategorie)} class="active"{/if}>
    <a href="{$category->cURL}"{if $hasItems} class="nav-sub"{/if} data-ref="{$category->kKategorie}">
        {$category->cName}
        {if $hasItems}<i class="fa fa-caret-{$caret} nav-toggle pull-right"></i>{/if}
    </a>
    {if $hasItems}
        <ul class="nav">
            {if !empty($category->Unterkategorien)}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents inPath=1}
            {else}
                {include file='snippets/categories_recursive.tpl' i=$i+1 categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents inPath=1}
            {/if}
        </ul>
    {/if}
</li>
{else}
    {if !empty($category->Unterkategorien)}
        {include file='snippets/categories_recursive.tpl' i=$i categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents}
    {else}
        {include file='snippets/categories_recursive.tpl' i=$i categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents}
    {/if}
{/if}
Zur Beachtung!!! Von dieser Änderung ist dann auch die Anzeige des Kategoriemenüs in der mobilen Ansicht betroffen. Dort kann dann nicht mehr in die übergeordneten Kategorien navigiert werden!
Um das zu verhindern müßte auch noch die /layout/header_xs_nav.tpl angepasst und dort in der Zeile mit dem include für die categories_recursive.tpl der Parameter inPath=1 ergänzt werden.

ich habe das gerade getestet, es funktioniert, jedoch kommt es zu Performance Problemen da folgendes SQL Query ca. 600x ausgeführt wird wenn eine Kategorie aufgerufen wird:

SQL:
SELECT
  tkategorie.kKategorie,
  tkategorie.cName,
  [..]
FROM
  tkategorie
  LEFT JOIN tkategoriesprache ON tkategoriesprache.kKategorie = tkategorie.kKategorie
  AND tkategoriesprache.kSprache = ?
  LEFT JOIN tkategoriesichtbarkeit ON tkategorie.kKategorie = tkategoriesichtbarkeit.kKategorie
  AND tkategoriesichtbarkeit.kKundengruppe = ?
  LEFT JOIN tseo ON tseo.cKey = ?
  AND tseo.kKey = tkategorie.kKategorie
  AND tseo.kSprache = ?
  LEFT JOIN tkategoriepict ON tkategoriepict.kKategorie = tkategorie.kKategorie
WHERE
  tkategoriesichtbarkeit.kKategorie IS NULL
  AND tkategorie.kOberKategorie = ?
GROUP BY
  tkategorie.kKategorie
ORDER BY
  tkategorie.nSort,
  tkategorie.cName

Die Querys kommen alle aus dem else:
Code:
{else}
    {if !empty($category->Unterkategorien)}
        {include file='snippets/categories_recursive.tpl' i=$i categories=$category->Unterkategorien limit=$limit activeId=$activeId activeParents=$activeParents}
    {else}
        {include file='snippets/categories_recursive.tpl' i=$i categoryId=$category->kKategorie limit=$limit categories=null activeId=$activeId activeParents=$activeParents}
    {/if}
{/if}

Wenn dieser gestrichen wird passt es. Wofür war dieser denn gedacht?
 
Zuletzt bearbeitet:

olli33

Gut bekanntes Mitglied
27. November 2008
288
10
Hallo, ich würde mich da gerne mastertango anschließen bzw. das Thema nochmal nach oben holen. Wie kann man beim NOVA Template die linke Kategoriebox/Kategoriebaum (links) so anzeigen, dass nur die aktive Kategorie plus Unterkategorien angezeigt werden.
 

olli33

Gut bekanntes Mitglied
27. November 2008
288
10
Hallo ich möchte das Thema nochmal hoch schieben, da ich es selber nicht lösen konnte. Gerne bezahle ich auch für die Anpassung der snippets/categories_recursive.tpl. Angebote gerne auch per PN. Danke
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.652
2.705
Berlin
Firma
css-umsetzung
Ich kann das, wäre dann nur noch zu klären ob der komplette Kategorie Baum also ab Level 0 oder ob nur das direkte parent Level angezeigt werden soll.
Einfach bei mir melden, dann sprechen wir über die Umsetzung.
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.652
2.705
Berlin
Firma
css-umsetzung
Ich hab da eine Lösung hinbekommen die rein Template Basierend ist, wer das also eines Tages noch jemand braucht um seine
Linkstruktur in der Sidebar klein und übersichtlich zu gestalten kann sich gerne bei mir melden.

Ich werde diese Lösung nicht öffentlich posten.
 

Ähnliche Themen