Hallo, Shopware 3.5x hatte eine tolle Funktion das leere Kategorien nicht angezeigt wurden. In SW4 wird jede Kategorie angezeigt. Daher die Frage, wie kann ich leere Kategorien am besten löschen? Über die neue (so Neu ist es ja nicht mehr) Kategoriestruktur weiß ich ja nicht genau welche Kategorie ein Endknoten ist etc. Sprich eine allgemeine Methode um Leere Kategorien herauszufinden und zu löschen wäre sicher spitze. Hat jemand eine Idee? Danke
Hi, da gibt es unterschiedliche Möglichkeiten, folgender Ansatz gibt dir alle Kategorien zurück, die keine Artikel zugeordnet haben und nicht root- oder Blogkategorien sind: select \* from s\_categories left join s\_articles\_categories\_ro ro on ro.categoryID = s\_categories.id where ro.id IS NULL and s\_categories.parent is not null and s\_categories.blog=false
Nicht geprüft wird, in diesem Fall, ob die Artikel aktiv oder für die aktuelle Kundengruppe überhaupt sichtbar sind. Müsste passen, kannst du ja mal testen. lG Daniel
Danke für den Schnipsel. Da es sich bei dem Shop aber um 3 Ebenen handelt wird das ja so nicht klappen. Das Problem ist die 2. Ebene. Diese ist kein Root hat aber auch so keinen Artikel zugeordnet. Die würde es mir jetzt alle löschen. Dafür finde ich keine Lösung. Danke
mhhh, mir ist gerade noch aufgefallen, dass im Path ja 3 Pipe’s vorhanden sind. Diese könnte ich Abfragen um in die 3. Ebene zu kommen. Dann lösche ich alle 3. Ebene Kategorien welche keine Artikel haben. Danach muss ich checken ob es von den 2. Ebene Kategorien welche gibt die jetzt gelöscht werden könnte, da es die 3. Ebene Kategorie nicht mehr gibt. Und das Gleiche dann für die 1. Ebene Kategorien. Alles recht kompliziert. Für Ideen und Ansätze wäre ich dankbar. ( Das war früher leichter in SW 3.5.x )
[quote=“ottscho”]Das Problem ist die 2. Ebene. Diese ist kein Root hat aber auch so keinen Artikel zugeordnet.[/quote] Deswegen joint der Daniel auch die _ro Tabelle. Hast du die query überhaupt mal ausprobiert?! Viele Grüße
Danke, nein hatte es noch nicht probiert und nur theoretisch bedacht ohne es genauer anzuschauen. Merci