Kategorien für Subshop abfragen

hi, ich bräuchte mal für eine einfache Db-Abfrage hilfe. Ich möchte mir alle Kategorien für den aktiven Shop ausgeben lassen. 

mein Query sieht momentan so aus:

SELECT categories.* FROM s_categories categories WHERE categories.active != 0 AND (categories.description LIKE ? OR categories.metakeywords LIKE ?) LIMIT 5

Das klappt soweit. Ich bekomme aber im Subshop die Kategorien für den HAuptshop angezeigt. Ich habe bei den Kategorien keine Verbindung zu zur ShopId gefunden. 

 $shopId = Shopware()-\>Shop()-\>getId();

 

Wäre nett wenn mir jemand auf die sprünge helfen könnte, danke.

 

Shopware hat für die Kategorien keine direkte Shopzuordnung. In den Shopeinstellungen kannst du nur den Kategorie Einstiegspunkt festlegen welcher für den jeweiligen Subshop greift. Wenn du stumpf alle Kategorien des Subshops haben willst musst du dich ab der Einstiegskat durch den Tree nach unten hangeln.

Grüße Matthias

über Shopware()->Shop()->getCategory()->getId(); müsstest du die Parentid des jeweiligen Shops bekommen.

Das kannst du dann z.B. mit dem path aus s_categories abgleichen: path LIKE %|kategorieIdVomSubshop|

1 „Gefällt mir“

@t2oh4e schrieb:

über Shopware()->Shop()->getCategory()->getId(); müsstest du die Parentid des jeweiligen Shops bekommen.

Das kannst du dann z.B. mit dem path aus s_categories abgleichen: path LIKE %|kategorieIdVomSubshop|hi

hi, so hatte ich mir das auch gedacht. leider fängt path immer mit dem direkten parent an und nicht mit der root-kategorie. das funktioniert also nicht. 

@MatthiasH schrieb:

Shopware hat für die Kategorien keine direkte Shopzuordnung. In den Shopeinstellungen kannst du nur den Kategorie Einstiegspunkt festlegen welcher für den jeweiligen Subshop greift. Wenn du stumpf alle Kategorien des Subshops haben willst musst du dich ab der Einstiegskat durch den Tree nach unten hangeln.

Grüße Matthias

das ist ja mühsam und wollte ich eigentlich vermeiden.  ziel ist es alle kategorien nach einem bestimmten suchwort anzuzeigen.

Du meinst deine Subshop-Kategorie hat selbst noch ein Parent?

Dann suchst du halt mit  LIKE %|kategorieIdVomSubshop|%

Oder übersehe ich was? 

@t2oh4e schrieb:

Du meinst deine Subshop-Kategorie hat selbst noch ein Parent?

Dann suchst du halt mit  LIKE %|kategorieIdVomSubshop|%

Oder übersehe ich was? 

naja, das funktioniert nur für die Hauptkategorien. aber nciht für unterkategorien weil der path immer nur beim direkten parent beginnt. die kategorieId aus  Shopware()->Shop()->getId(); ist also nciht immer enthalten.

Doch ist sie. Der Path gibt immer alle Parents der jeweiligen Kategorie aus.

Beispiel aus den Demodaten:

Kategorie Stöcke (Deutsch -> Höhenluft & Abenteuer -> Ausrüstung -> Zubehör -> Stöcke) hat den path |12|8|5|3|

Bist du im Standard-Shop mit der Kategorie Deutsch (id 3) als Root findest du diese Kategorie mit path LIKE %|3|

Wenn dein Subshop jetzt z.B. die Kategorie Höhenluft & Abenteuer (id 5) als Root hat findest du Stöcke (und alle anderen Kategorien unterhalb von Höhenluft & Abenteuer) mit path LIKE %|5|%

Zweiteres deckt auch den ersten Fall mit ab, sollte also eigentlich immer funktionieren.

Hmmm… Das muss ich mir nachher noch mal ansehen. Ich bin bisher davon ausgegangen, dass path von links nach rechts aufgebaut ist. Ich hatte das immer nur direkt in der Datenbank angesehen. 

Vielen Dank erst mal. Ich werde das heute Abend noch mal testen.