CMS-Block: Unterkategorien-Navigation mit konfigurierbarer Spaltenbreite #19

Closed
opened 2026-08-08 22:53:56 +00:00 by csaeum · 0 comments
Owner

Ziel

Neuer CMS-Block für den Shopware Layout-Designer (Seiten/Kategorie-Layouts), der alle direkten Unterkategorien einer im Block ausgewählten Kategorie als Navigations-Spalten anzeigt (z. B. für Footer-Sitemaps oder Kategorie-Übersichtsseiten).

Betroffenes Modul

Neues Modul, bisher nicht in AGENT.md dokumentiert. Braucht sowohl Administration- als auch Storefront-Anteil.

Fachliche Anforderungen

  1. Kategorie-Auswahl: Im Block-Konfigurationspanel wählt der Redakteur eine Kategorie aus (Single-Entity-Select, Entity category).
  2. Anzeige: Alle direkten Unterkategorien (1 Ebene, keine Enkel-Kategorien) der gewählten Kategorie werden als Spalten mit Link zur jeweiligen Kategorie-Seite gerendert. Keine Verschachtelung.
  3. Spaltenbreite konfigurierbar: Zusätzliches Textfeld im Konfigurationspanel, in das Bootstrap-Grid-Klassen eingetragen werden (Beispiel: col-6 col-md-4). Diese Klassen werden auf jede erzeugte Spalte angewendet — steuert damit Spaltenanzahl/Responsive-Verhalten pro Zeile.
  4. Nur aktive/sichtbare Unterkategorien anzeigen (Shopware-Standard: active = true, visible/Sales-Channel-Zuordnung berücksichtigen wie bei Shopwares eigener Kategorie-Navigation).
  5. Leerer Zustand: Ist keine Kategorie ausgewählt oder hat sie keine Unterkategorien, wird nichts oder ein leerer Platzhalter gerendert (kein Fehler).

Technische Details

  • Shopware-CMS-Blöcke sind Layout-Container aus vorgefertigten Elementen; für dynamische Daten (Kategorie-Kinder laden) wird zusätzlich ein eigenes Element mit CmsElementResolverInterface-Implementierung benötigt (Service, getriggert über shopware.cms.data_resolver-Tag). Der neue Block kapselt dieses eine Element, damit Redakteure im Block-Picker weiterhin nur einen Baustein sehen (üblicher Aufbau bei Custom-CMS-Bausteinen in Shopware-Plugins).
  • Administration: neue Vue-Komponenten unter src/Resources/app/administration/src/module/sw-cms/elements/<name> (Config-Panel: Entity-Select + Textfeld) und .../blocks/<name> (Block-Definition/Preview), analog Shopwares eigenem Aufbau für CMS-Bausteine.
  • Storefront: eigenes Twig-Template, das die geladenen Unterkategorien mit den konfigurierten Bootstrap-Klassen pro Spalte ausgibt.
  • Prüfen: Existiert bereits src/Resources/app/administration/ in diesem Plugin? Aktuell nein — muss neu angelegt werden (bisher nur Storefront-Views vorhanden).

Akzeptanzkriterien

  • Neuer Block im Layout-Designer wählbar (eigener Name/Icon, sinnvoll benannt mit wsc-Präfix)
  • Kategorie-Auswahl im Konfigurationspanel funktioniert
  • Direkte Unterkategorien der gewählten Kategorie werden als Spalten mit funktionierendem Link gerendert
  • Spaltenbreite ist über Textfeld (Bootstrap-Klassen) konfigurierbar und wird korrekt auf die Spalten angewendet
  • Nur aktive/sichtbare Unterkategorien werden berücksichtigt
  • Leerer Zustand (keine Auswahl/keine Kinder) führt zu keinem Fehler
  • Reale Verifikation im DDEV-Testshop: Block einer Seite zuweisen, Kategorie mit mehreren Unterkategorien auswählen, Storefront-Ausgabe prüfen

Hinweis

Scope-Klärung erfolgt: Nur 1 Ebene (direkte Unterkategorien), keine verschachtelte Enkel-Kategorien-Liste innerhalb der Spalten.

## Ziel Neuer CMS-Block für den Shopware Layout-Designer (Seiten/Kategorie-Layouts), der alle **direkten Unterkategorien** einer im Block ausgewählten Kategorie als Navigations-Spalten anzeigt (z. B. für Footer-Sitemaps oder Kategorie-Übersichtsseiten). ## Betroffenes Modul Neues Modul, bisher nicht in `AGENT.md` dokumentiert. Braucht sowohl Administration- als auch Storefront-Anteil. ## Fachliche Anforderungen 1. **Kategorie-Auswahl:** Im Block-Konfigurationspanel wählt der Redakteur eine Kategorie aus (Single-Entity-Select, Entity `category`). 2. **Anzeige:** Alle **direkten** Unterkategorien (1 Ebene, keine Enkel-Kategorien) der gewählten Kategorie werden als Spalten mit Link zur jeweiligen Kategorie-Seite gerendert. Keine Verschachtelung. 3. **Spaltenbreite konfigurierbar:** Zusätzliches Textfeld im Konfigurationspanel, in das Bootstrap-Grid-Klassen eingetragen werden (Beispiel: `col-6 col-md-4`). Diese Klassen werden auf jede erzeugte Spalte angewendet — steuert damit Spaltenanzahl/Responsive-Verhalten pro Zeile. 4. Nur aktive/sichtbare Unterkategorien anzeigen (Shopware-Standard: `active` = true, `visible`/Sales-Channel-Zuordnung berücksichtigen wie bei Shopwares eigener Kategorie-Navigation). 5. Leerer Zustand: Ist keine Kategorie ausgewählt oder hat sie keine Unterkategorien, wird nichts oder ein leerer Platzhalter gerendert (kein Fehler). ## Technische Details - Shopware-CMS-Blöcke sind Layout-Container aus vorgefertigten **Elementen**; für dynamische Daten (Kategorie-Kinder laden) wird zusätzlich ein eigenes **Element** mit `CmsElementResolverInterface`-Implementierung benötigt (Service, getriggert über `shopware.cms.data_resolver`-Tag). Der neue Block kapselt dieses eine Element, damit Redakteure im Block-Picker weiterhin nur einen Baustein sehen (üblicher Aufbau bei Custom-CMS-Bausteinen in Shopware-Plugins). - Administration: neue Vue-Komponenten unter `src/Resources/app/administration/src/module/sw-cms/elements/<name>` (Config-Panel: Entity-Select + Textfeld) und `.../blocks/<name>` (Block-Definition/Preview), analog Shopwares eigenem Aufbau für CMS-Bausteine. - Storefront: eigenes Twig-Template, das die geladenen Unterkategorien mit den konfigurierten Bootstrap-Klassen pro Spalte ausgibt. - Prüfen: Existiert bereits `src/Resources/app/administration/` in diesem Plugin? Aktuell **nein** — muss neu angelegt werden (bisher nur Storefront-Views vorhanden). ## Akzeptanzkriterien - [ ] Neuer Block im Layout-Designer wählbar (eigener Name/Icon, sinnvoll benannt mit `wsc`-Präfix) - [ ] Kategorie-Auswahl im Konfigurationspanel funktioniert - [ ] Direkte Unterkategorien der gewählten Kategorie werden als Spalten mit funktionierendem Link gerendert - [ ] Spaltenbreite ist über Textfeld (Bootstrap-Klassen) konfigurierbar und wird korrekt auf die Spalten angewendet - [ ] Nur aktive/sichtbare Unterkategorien werden berücksichtigt - [ ] Leerer Zustand (keine Auswahl/keine Kinder) führt zu keinem Fehler - [ ] Reale Verifikation im DDEV-Testshop: Block einer Seite zuweisen, Kategorie mit mehreren Unterkategorien auswählen, Storefront-Ausgabe prüfen ## Hinweis Scope-Klärung erfolgt: Nur 1 Ebene (direkte Unterkategorien), keine verschachtelte Enkel-Kategorien-Liste innerhalb der Spalten.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SW-Plugins/wsc_swplugin_aiseotools#19
No description provided.