Leere Kategorie Nachrichten: Technische Details
Ablauf, Plugin-Struktur, Zusatzfelder, Sicherheit und Umfang des Plugins: Subscriber, Service, Twig-Erweiterung, Template und Lebenszyklus.
Technische Details
Paket und Plugin-Klasse
| Eigenschaft | Wert |
|---|---|
| Composer-Paket | mmd/sw67-empty-category |
| Plugin-Klasse | Mmd\EmptyCategory\MmdEmptyCategory |
| Technischer Plugin-Name | MmdEmptyCategory |
| Namespace | Mmd\EmptyCategory |
Ablauf
graph TD
A["Kategorieseite aufgerufen"] --> B["NavigationPageLoadedEvent"]
B --> C["CategoryPageSubscriber lädt Elternkette und Medien"]
C --> D["Listing-Template: Block element_product_listing_col_empty"]
D --> E["Twig-Funktion mmd_empty_category_message"]
E --> F["EmptyCategoryMessageService löst die Nachricht auf"]
F --> G{"Nachricht gefunden?"}
G -->|"Ja"| H["Eigene Nachricht rendern"]
G -->|"Nein"| I["Shopware-Standardmeldung"]
Bausteine
| Klasse / Datei | Aufgabe |
|---|---|
Subscriber\CategoryPageSubscriber |
Hört auf NavigationPageLoadedEvent. Lädt die Elternkategorien (bis zu 10) nur, wenn bei der Kategorie die Vererbung aktiv ist. Lädt die Medien der Bilder, sobald Nachricht, Bild oder Vererbung gesetzt ist |
Service\EmptyCategoryMessageService |
Löst die Nachricht auf: eigene Nachricht, sonst Vererbung nach oben, sonst leer. Die Suche umfasst höchstens 10 Ebenen, die Kategorie selbst eingerechnet, es werden also höchstens 9 Elternkategorien erreicht. Bereinigt CSS-Klassen und Auswahlwerte |
Service\EmptyCategoryMessage |
Unveränderliches Wertobjekt mit Nachricht, Bild-URL, CSS-Klassen, Größe und Ausrichtungen |
Twig\EmptyCategoryExtension |
Registriert die Twig-Funktion mmd_empty_category_message |
views/storefront/component/product/listing.html.twig |
Überschreibt den Block element_product_listing_col_empty |
app/storefront/src/scss/base.scss |
Styles der Plugin-Klassen |
MmdEmptyCategory |
Legt das Zusatzfeld-Set an, ergänzt es beim Update und entfernt es bei der Deinstallation |
Zusatzfelder
Das Set mmd_empty_category ist der Entität category zugeordnet und enthält die Felder aus der Konfiguration. Die Werte liegen im Feld customFields der Kategorie.
Umfang des Plugins
| Bereich | Status |
|---|---|
| Plugin-Einstellungen (config.xml) | keine |
| Eigene Routen und API-Endpunkte | keine |
| Eigene Datenbanktabellen und Migrationen | keine |
| Admin-Module und Rechte (ACL) | keine, die Felder erscheinen im vorhandenen Kategorie-Editor |
| Scheduled Tasks und Befehle | keine |
| Externe Anfragen | keine |
| Snippets | mmd.emptyCategory.imageAlt (de-DE, en-GB) |
Sicherheit
- Die Nachricht wird mit dem Filter
sw_sanitizeausgegeben. - CSS-Klassen werden auf Buchstaben, Ziffern, Bindestriche, Unterstriche und Leerzeichen reduziert.
- Die Werte der Auswahlfelder werden gegen die erlaubten Werte geprüft, sonst gilt der Standardwert.
- Das Bild wird über die Medienverwaltung aufgelöst, seine URL wird als HTML-Attribut maskiert.
- Es gibt keine Inline-Styles, deshalb ist das Plugin mit strikter Content Security Policy kompatibel.
- Das Plugin verarbeitet keine personenbezogenen Daten.