Unterkategorien anzeigen

Hallo, gibt es für SW4 ein Snippet, um simpel die Unterkategorien der ausgewählten Kategorie darzustellen ? Beste Grüße Domi

gib dem Entsprechenden Controller $categoryChildren = Shopware()-\>Modules()-\>Categories()-\>sGetWholeCategoryTree($categoryId); if(!$categoryChildren){ $categoryChildren = Shopware()-\>Modules()-\>Categories()-\>sGetWholeCategoryTree($categoryContent['parentId']); } beim Vie()->assign erweitern: 'sCategoryChildren' =\> $categoryChildren, Dann kannst du dir mit: [code] {if $sCategoryChildren}

{foreach from=$sCategoryChildren item=CChild} {$CChild.name}
{/foreach}
{/if} [/code] die Namen - bzw. die restlichen Werte - ausgeben lassen.

1 „Gefällt mir“

Juchuu habs auch hinbekommen. Für alle, die solche Noob`s sind wie ich, etwas ausführlicher: Den Controller findet man unter: „engine/Shopware/Controllers/Frontend/Listing.php“ Dort die ersten Zeilen einbauen. Ich habs in Zeile 48 gesteckt: public function indexAction() { $categoryId = $this-\>Request()-\>getParam('sCategory'); $categoryContent = Shopware()-\>Modules()-\>Categories()-\>sGetCategoryContent($categoryId); /\*\* CODE STÜCK NR 1 \*/ $categoryChildren = Shopware()-\>Modules()-\>Categories()-\>sGetWholeCategoryTree($categoryId); if(!$categoryChildren){ $categoryChildren = Shopware()-\>Modules()-\>Categories()-\>sGetWholeCategoryTree($categoryContent['parentId']); /\*\* CODE STÜCK NR 1 ENDE \*/ } Dann weiter unten in der File „Listing.php“ $this-\>View()-\>assign(array( 'sBanner' =\> Shopware()-\>Modules()-\>Marketing()-\>sBanner($categoryId), 'sBreadcrumb' =\> $this-\>getBreadcrumb($categoryId), 'sCategoryContent' =\> $categoryContent, /\*\* CODE STÜCK NR 2 \*/'sCategoryChildren' =\> $categoryChildren, /\*\* CODE STÜCK NR 2 ENDE \*/ Danach, kann man in einem Listing Template (z.B. /frontend/listing/index.tpl" die aktiven Kategorien ausgeben lassen mit:

[code]{if $sCategoryChildren}

{foreach from=$sCategoryChildren item=CChild} {$CChild.name}
{/foreach}
{/if}[/code]

Mit den Variablen „{$CChild.link“ kann man den Rest auslesen lassen. z.B. {$CChild.name} usw.

Danke für den Code an „bbene“

Gruß Sebastian

1 „Gefällt mir“

bbene weißt du zufällig auch, wie man sich nur die level 1&2 anzeigen kann? Beispiel: Wohnen -> Garten Wohnen -> Küche Wohnen -> Garten -> Rasenmäher Wohnen -> Garten -> Bäume Wohnen -> Küche -> Herd Wohnen -> Küche -> Kühlschrank Ich habe die Kategorien links auf der Startseite eingebunden und würde dort gerne nur die Hauptkategorien mit dem ersten level der Unterkategorien (also Wohnen -> Garten und Wohnen -> Küche) anzeigen lassen. Vielen Dank schonmal.

Evtl. mit CSS. Den Cat Baum auslesen lassen im Template mit: {if $sCategories} {call name=categories categories=$sCategories} {/if} Shopware legt einen Baum an, mit den Klassen .submenu und dem entsprechendem .level1, .level2 usw. Dann mit CSS die gewünschten Level ausblenden lassen. Nicht elegant, aber würde gehen.

Hallo, ich bin Shopware Neuling, ich würde diese Lösung gerne als Plugin realisieren, hat da jemand vielleicht ein paar Zeilen Code für mich. Ich weiß jetzt nicht welches Event sich am Besten eignet und wie man das Ergebnis dann wieder ans Template übergibt. Danke und Grüße Bernie

Wenn ich laut Anleitung vorgehe kommt folgender Error: Parse error: syntax error, unexpected 'protected' (T\_PROTECTED) in /homepages/17/d553709649/htdocs/shop/engine/Shopware/Controllers/Frontend/Listing.php on line 229 Liegt es an der neusten Version? Gibt es eventuell eine Möglichkeit ohne coding die Subkategorien samt Bilder anzeigen zu lassen? Habe mit Einkaufswelten angefangen aber das ist sehr mühselig und wenn sich Kategorien ändern, darf man alles von Hand umändern. Das ist unsinnig. Wir benutzen Version 4.3.2 Professional

@bernhard schau dich mal im Wiki um. Da findest eine gute Dokumentation mit Tutorials, Beispielen etc @vegas du hast den Code wohl nicht richtig kopiert / eingefügt. Ohne entsprechende Vorkenntnisse / Grundlagen ist das immer sehr mutig und schwierig Gesendet von meinem iPhone mit Tapatalk

Ok kannst du mal drüberschauen ob du was findest? Bin nach Anleitung vorgegangen und habe keine Zeile ersetzt, nur dazwischen gesetzt. Danke! Eingefügt bei Zeile 48: public function indexAction() { $supplierId = $this-\>Request()-\>getParam('sSupplier'); $categoryId = $this-\>Request()-\>getParam('sCategory'); $categoryContent = Shopware()-\>Modules()-\>Categories()-\>sGetCategoryContent($categoryId); /\* NEU \*/ $categoryChildren = Shopware()-\>Modules()-\>Categories()-\>sGetWholeCategoryTree($categoryId); if(!$categoryChildren){ $categoryChildren = Shopware()-\>Modules()-\>Categories()-\>sGetWholeCategoryTree($categoryContent['parentId']); /\* NEU \*/ $categoryId = $categoryContent['id']; Shopware()-\>System()-\>\_GET['sCategory'] = $categoryId; Dann weiter unten: $showListing = true; $hasEmotion = false; $viewAssignments = array( 'sBanner' =\> Shopware()-\>Modules()-\>Marketing()-\>sBanner($categoryId), 'sBreadcrumb' =\> $this-\>getBreadcrumb($categoryId), 'sCategoryContent' =\> $categoryContent, 'campaigns' =\> $campaigns, 'sCategoryInfo' =\> $categoryContent, /\* NEU \*/ 'sCategoryChildren' =\> $categoryChildren, /\* NEU \*/ );

[quote]if(!$categoryChildren){[/quote] Die schließende Klammer fehlt. Viele Grüße

Danke der Fehler ist weg! Jetzt wird mir eine kleine Liste angezeigt. Problem hierbei ist jetzt, dass auch unter aktiven Einkaufswelten das „Kategorie-Listing“ angezeigt wird :thumbdown: Also die Lösung ist auch hinfällig. Finde es echt schwach, dass diese Funktion nicht bei den Kategorien im Backend einstellbar ist. Das ist doch eine absolute Standardaufgabe :frowning: