Kategorien ohne Artikel

Hi, sollten leere Kategorien (ohne Inhalt bzw. Artikel) nicht automatisch ausgeblendet werden?

In den OXID “Performance” Einstellungen gibt es tatsächlich eine Option, um das Verhalten von leeren Kategorien anzupassen. Um diese Einstellung zu finden und zu aktivieren, befolge bitte die folgenden Schritte:

  1. Melde Dich im OXID eShop Admin-Bereich an.
  2. Navigiere zu “Stammdaten” > “Grundeinstellungen” > “Einstell.” > “Perform.”.
  3. Suche die Option “Leere Kategorien ausblenden”.
  4. Aktiviere das Kontrollkästchen neben “Leere Kategorien ausblenden”.
  5. Klicke auf “Speichern” am unteren Ende der Seite, um die Änderungen zu übernehmen.

Nach Aktivierung dieser Einstellung werden leere Kategorien automatisch ausgeblendet und den Kunden werden nur Kategorien mit Inhalt angezeigt. Bitte beachte, dass diese Änderung auf alle Kategorien im Shop global angewendet wird, du hast mit diesem Schritt also keine Möglichkeit explizit für einzelne Kategorien aus dieser Logik auszubrechen.

Zusätzlich gilt es zu beachten:
Bei großen Kategoriebäumen verlangsamt diese Option den Ladevorgang wenn aktiviert, da ein zusätzlicher Check auf Inhalt pro Kategorie durchgeführt wird.

Die Option sorgt also im deaktivierten Zustand für mehr Performance als wenn aktiviert.

Guten Morgen @Netensio thx, ok in den Einstellung war der Haken gesetzt gewesen bzw. ist gesetzt.

Ich habe bei den Einstellungen obwohl ich nichts geändert habe einfach einmal auf speichern geklickt und siehe da es hat geholfen. Die leeren Kategorien sind ausgeblendet, warum ich explizit auf speichern klicken musste, kann ich nicht nachvollziehen. Es sollte doch wenn gesetzt irgendwie automatisch so laufen.

Ich vermute, dass das beschriebene Verhalten auf das Caching zurückzuführen ist.

Wenn die Einstellungen im Shop gespeichert werden, wird die folgende Funktion ausgeführt:

resetContentCache()

Dadurch wird der Kategoriebaum zunächst neu geladen, anstatt die Informationen aus dem Cache abzurufen. Bei erneuten Aufruf sollte der Kategoriebaum wieder aus dem Cache geladen werden, solange dieser noch gültig ist. Die Cache Datei enthält dann nicht mehr die leeren Kategorien.

Vorsicht mit der Option “leere Kategorien ausblenden”. Die macht im Hintergrund bei jedem Seitenladen einige aufwändige Abfragen in der Datenbank, um zu prüfen, ob die Kategorie leer ist. Wem was an der Shopperformance liegt, ignoriert besser diese Option und schaltet leere Kategorien komplett ab. Das lässt sich ggf. auch via Script einmal am Tag ausführen lassen.

Hallo @DanielS, vielen Dank für den Hinweis. Das mit der Performance ist schon eine Idee wert, aber wie könnte das genau aussehen, Script und so?

Du kannst das über 2 Wege lösen:

  • Entweder über die Shopklassen. Man lädt sich alle aktiven Kategorien, prüft deren Artikelliste auf die Anzahl, setzt den jeweiligen Aktivstatus und speichert dann.
  • Alternativ kann man das auch über die Datenbank lösen. In der Abfrage die Bedingungen für leere Kategorien definieren und ein Update auf alle zurückgelieferten Kategorien machen. Das Ganze wird dann ebenfalls in ein PHP-Script verpackt, welches man als Cronjob einrichten kann.

Der läuft dann zyklisch und spart die immer wieder kehrende Leere-Kategorien-Prüfung.

Parallel dazu kann man sich auch inaktive Kategorien ausgeben lassen, die aktive Artikel beinhalten.