Zum Inhalt springen
Stone & Water
Doku · 05 Kategorien-Verwaltung

Kategorien-Verwaltung · Baum, SEO, Bilder & KI — alles in einem Modal

Den kompletten Kategoriebaum pflegen, ohne den Shopware-Standard zu verlassen: anlegen, verschieben, übersetzen, SEO-URLs setzen, Bilder zuweisen, Produkte zuordnen, KI-Texte generieren und den ganzen Baum als CSV oder JSON sichern — pro Verkaufskanal und Sprache.

Öffnen & Aufbau

Der Button „Kategorien" (links neben dem Feed-Generator in der Produktliste) öffnet das Modal. Die Verkaufskanal-/Sprach-Auswahl nutzt den Channel-Bar im Stammdaten-Stil (mit Icons und Feld-Rahmen). Pro Kanal wird der Baum ab der Navigations-Wurzel aufgebaut, die Einstiegskategorie steht oben. Geladen wird direkt über das category-Repository — kein separater API-Endpoint, keine eigene Seite. Abgesichert über die eigene Berechtigung „Kategorien verwalten".

Selbstheilung: Beim Öffnen werden kaputte Kategorien (z.B. ungültige Sortier-Referenzen) automatisch repariert, damit das Listing nicht crasht.

Anlegen, bearbeiten, verschieben

  • Neue Kategorie über den Button in der Leiste — schnell eine Wurzelkategorie im gewählten Kanal, oder als Unterkategorie. Neue Kategorien werden in der Systemsprache angelegt.
  • Umbenennen, aktivieren/deaktivieren, löschen direkt im Baum bzw. Detailbereich. Die Lösch-Bestätigung ist ein Dialog im PIM-CI-Stil (kein Browser-Confirm).
  • Drag & Drop: Kategorien unter einen anderen Übergeordneten ziehen.
  • Duplizieren im Detail-Kopf — dupliziert die Kategorie inklusive aller Unterkategorien (Subtree) als Geschwister mit Namenszusatz „(Kopie)".

Felder je Sprache, Typ & Layout

Name, Beschreibung und SEO-Felder werden pro Sprache gepflegt; ein Sprachwechsel lädt Baum und Detail neu, sodass übersetzte Felder erscheinen. Die Beschreibung ist ein WYSIWYG-Editor (sw-text-editor) mit sichtbarer HTML-Formatierung. Dazu:

  • Typ & übergeordnete Kategorie setzen, externer Link bei Link-Kategorien
  • Layout (CMS-Erlebniswelt) zuweisen, inkl. Button „Neue Erlebniswelt anlegen" (öffnet den CMS-Editor in neuem Tab)
  • Schalter „In Hauptnavigation anzeigen", Zusatzfelder-Abschnitt
  • Standard-Sortierung (Shopware product_sorting) — gespeichert über die Kategorie-Slot-Konfiguration; „Standard (vererbt)" entfernt den Override wieder

Kategoriebild & Alt-Text

In den Stammdaten (direkt über „In Navigation anzeigen") sitzt das Kategoriebild (Cover) mit Vorschau: aus der Mediathek wählen oder direkt hochladen, entfernen. Gespeichert als category.mediaId, Uploads landen im Kategorie-Medienordner. Ein Alt-Text-Feld (sprachabhängig, am Mediendatensatz gespeichert) verbessert Barrierefreiheit und SEO.

SEO-URL (Slug) pro Kanal & Sprache

Im Bereich „Beschreibung & SEO" lässt sich je Verkaufskanal und Sprache ein SEO-URL-Slug setzen. Beim Öffnen wird die aktuelle Canonical-URL geladen, beim Speichern über einen Backend-Endpoint geschrieben:

  • Die alte URL bleibt als 301-Weiterleitung erhalten (alter Eintrag wird non-canonical), die neue wird Canonical und als manuell markiert — Shopware überschreibt sie beim Reindex nicht.
  • Der Slug wird zusätzlich zuverlässig im Zusatzfeld staw_pim_seo_url der Kategorie gespeichert (über den normalen Speichern-Vorgang).
  • Leeres Feld = Override entfernen, Shopware generiert wieder automatisch.
Hinweis: Headless-Verkaufskanäle haben keine Storefront-URLs. Schlägt das Schreiben der echten Storefront-URL fehl, erscheint eine sichtbare Warnung mit Ursache.

Produktzuordnung — Stream oder Preset

In der Sektion „Produkte" wird gesteuert, welche Produkte in der Kategorie liegen — in zwei klar getrennten Optionen:

  • Dynamische Produktgruppe (Stream): eine Shopware-Produktgruppe (product_stream) auswählen; gespeichert werden productAssignmentType=product_stream und die productStreamId.
  • Preset (StawPim-Filter): ein StawPim-Filter (staw_pim_filter) mit Live-Trefferanzahl. Beim Speichern im Preset-Modus werden die aufgelösten Produkte der Kategorie fest zugewiesen, sodass sie im Frontend erscheinen. Schutz: 0 Treffer leert die Kategorie nicht.

Die Preset-Anzeige zeigt Hauptartikel und Varianten getrennt (wie im Listing). „Kein Preset" entfernt die Zuordnung wieder.

Vollständigkeits-Score

Jede Kategorie im Baum zeigt einen Prozent-Score (grün/gelb/rot) basierend auf gefüllter Beschreibung, Meta-Titel, Meta-Description und Kategoriebild. Im Detailbereich wird der Score live neben dem Titel angezeigt und aktualisiert sich beim Bearbeiten. Ein Filter nach Vollständigkeit neben der Suche zeigt gezielt unvollständige Kategorien.

KI-Texte & Übersetzung

Ein Button „KI-Texte" generiert Beschreibung, Meta-Title, Meta-Description und Keywords — über alle vier KI-Anbieter, mit Tonalitätswahl, Ausgabe in der aktiven Sprache und freiem Feld „Weitere Anweisungen an die KI". Schalter „Unterkategorien einbeziehen" (ganzer Unterbaum) und „Bestehende Texte überschreiben".

  • „Übersetzen" steht zusätzlich einzeln neben „KI-Texte" — Übersetzung der Felder von Quell- in Zielsprache per DeepL oder KI-Anbieter.
  • Bulk: Mit „Alle auswählen" + Bulk-Button werden KI-Texte oder Übersetzungen für alle ausgewählten Kategorien auf einmal erzeugt. KI-Fehler zeigen die echte Ursache (curl-Fehler + Upstream-Status) statt nur „Proxy HTTP 502".

Bulk-Aktionen im Baum

Kategorien lassen sich im Baum per Checkbox mehrfach auswählen. Eine Bulk-Leiste zeigt die Anzahl und bietet „Aktiv/Inaktiv setzen" sowie „In Nav anzeigen/ausblenden". Vor jeder Aktion wird ein benannter Snapshot des vorherigen Zustands erstellt; ein Button „Verlauf" listet Snapshots (wiederherstellbar) samt Audit-Log.

Import / Export

Über den Button „Import/Export" lässt sich der komplette Kategoriebaum des gewählten Verkaufskanals verwalten:

  • CSV-Export inklusive Zusatzfeldern als eigene cf.-Spalten. Mehrsprachig: je übersetzbarem Feld eine Spalte pro Shop-Sprache im Format feld.locale (z.B. name.de-DE, description.en-GB).
  • CSV-Import löst die übergeordnete Kategorie über die Spalte parentPath (Pfad mit „ > ") auf, legt fehlende Kategorien an und aktualisiert bestehende (gleicher Pfad + Name). Mit Vorschau und Validierung (Name/Typ/Parent).
  • Baum als JSON sichern — vollständiges Backup inkl. aller Sprachen, Zusatzfelder und IDs, ideal vor größeren Umbauten. Wiederherstellen = erneut importieren.
Sicherheit beim Import: Vor dem Import lässt sich eine CSV-Sicherung herunterladen. Die Identität (parentPath + name) bleibt beim mehrsprachigen Import unverändert — Pro-Sprache-Spalten schreiben nur die jeweilige Übersetzung.