Funktionsweise
Dies ist die wichtigste Seite der Dokumentation. Lesen Sie sie, bevor Sie mit der Konfiguration beginnen — fast jede “das Plugin funktioniert nicht”-Frage stellt sich als Missverständnis des hier beschriebenen Modells heraus.
Das Denkmodell: Ersetzung, nicht Zuweisung
Abschnitt betitelt „Das Denkmodell: Ersetzung, nicht Zuweisung“Shopware unterstützt nativ ein CMS-Layout pro Kategorie, pro Produkt, pro Landing-Seite. Das Plugin ändert daran nichts — es ermöglicht Ihnen nicht, einer Kategorie mehrere Layouts zuzuweisen. Stattdessen agiert es zur Request-Zeit als Ersetzungsschicht:
- Shopware lädt die Seite und löst das Basislayout auf normalem Wege auf — das, welches Sie auf der Kategorie (bzw. dem Produkt oder der Landing-Seite) gesetzt haben.
- Das Plugin schaut sich jedes Layout an, dem Regeln zugewiesen sind.
- Wenn eine Regel zum aktuellen Request passt (Verkaufskanal, Kunde, Datum etc.), tauscht das Plugin das Basislayout gegen diese Alternative aus und rendert stattdessen die Alternative.
- Wenn keine Regel passt, wird das Basislayout wie üblich gerendert.
Die entscheidende Folge: Jede Kategorie, jedes Produkt oder jede Landing-Seite, auf die das Plugin reagieren soll, muss bereits ein Basislayout zugewiesen haben (über die normale Shopware-UI). Wenn eine Kategorie kein CMS-Layout hat, hat das Plugin nichts zu ersetzen, und die Seite wird nicht korrekt gerendert.
Die drei Stellschrauben
Abschnitt betitelt „Die drei Stellschrauben“Für jede der drei Seitenarten — Produkt, Kategorie (Navigation), Landing-Seite — stellt das Plugin drei Stellschrauben bereit:
- Ersetzungsmodus — wann darf ein Basislayout ersetzt werden?
- Ersetzbare Layouts — (nur relevant für den Modus “Zugewiesen, um ersetzbares Layout zu ersetzen”) die explizite Allow-Liste der Basislayouts, die ersetzt werden dürfen.
- Ersetzungstypen — welche CMS-Seitentypen dürfen als Ersatz fungieren? (z. B. darf ein
landingpage-Layout eineproduct_list-Basis ersetzen?)
Alle drei finden Sie unter Einstellungen → Erweiterungen → Advanced Layouts Assigner.
Ersetzungsmodi
Abschnitt betitelt „Ersetzungsmodi“Der Modus steuert, ob das Plugin überhaupt versucht zu ersetzen für ein gegebenes Basislayout. Die Optionen unterscheiden sich leicht je nach Seitenart:
| Seitenart | Optionen |
|---|---|
| Produktseite | Ohne zugewiesenes Layout · Zugewiesen, um ersetzbares Layout zu ersetzen · Ohne zugewiesenes Layout oder zugewiesen, um ersetzbares Layout zu ersetzen · Alle |
| Kategorienseite | Mit Standardlayout · Zugewiesen, um ersetzbares Layout zu ersetzen · Alle |
| Landing-Seite | Mit Standardlayout · Zugewiesen, um ersetzbares Layout zu ersetzen · Alle |
- Ohne zugewiesenes Layout (nur Produktseite) — ersetzen, wenn das Produkt selbst kein spezifisches Layout hat (und Shopware sonst das Standardlayout verwenden würde).
- Mit Standardlayout (Kategorie- / Landing-Seite) — ersetzen, wenn die Seite das in Shopware konfigurierte Standardlayout verwendet (das unter Einstellungen → Erlebniswelten → Standardlayouts gesetzte). Eigene per-Kategorie-Layouts werden nicht angerührt.
- Zugewiesen, um ersetzbares Layout zu ersetzen — ersetzen, wenn das Basislayout in der unter dem Modus-Dropdown gepflegten Liste Ersetzbare Layouts für … explizit aufgeführt ist.
- Alle — beliebiges Basislayout ersetzen, sobald eine Regel passt. Am einfachsten und die richtige Wahl, wenn Sie wollen, dass alle Kategorienseiten eines bestimmten Verkaufskanals ein anderes Layout verwenden. Dies ist der Modus, den das Mehrere-Verkaufskanäle-Rezept empfiehlt.
Siehe Ersetzungsmodi für die vollständige Matrix und Beispiele.
Ersetzungstypen
Abschnitt betitelt „Ersetzungstypen“Selbst wenn ein Basislayout ersetzbar ist, muss das Plugin entscheiden, welche alternativen Layouts in Betracht kommen. Diese Entscheidung wird durch die Karte Ersetzungstypen unten in den Einstellungen begrenzt. Für jede “eingehende” Seitenart listen Sie die CMS-Seitentypen auf, die als Alternative dienen dürfen:
| Eingehende Seite | Standard-Ersetzungstypen | Erweiterbar auf |
|---|---|---|
| Produktseite | product_detail | page, landingpage, product_list |
Shop-Seite (page) | page | landingpage, product_list |
| Landing-Seite | landingpage | page, product_list |
Listing-Seite (product_list) | product_list | page, landingpage |
Wenn der entsprechende Eintrag leer ist, sucht das Plugin für diese Seitenart überhaupt nicht nach einer Alternative — selbst wenn Regeln passen. Die Post-Install-Routine seeded den naheliegenden Typ pro Art als Default; Sie erweitern diese Liste in der Regel nur, wenn z. B. ein Landing-Seiten-Layout eine Listingseite ersetzen soll.
Regeln am Layout
Abschnitt betitelt „Regeln am Layout“Das eigentliche Matching erfolgt über Regeln, die dem alternativen Layout zugewiesen sind, nicht über die Kategorie oder das Produkt. Regeln zuweisen:
- Inhalte → Erlebniswelten → Layout öffnen
- Layout-Zuweisung in der rechten Seitenleiste
- Schaltfläche Layout zuweisen
- Tab Regeln (durch dieses Plugin hinzugefügt, sitzt neben Kategorien / Produkte / Landing-Seiten)
- Regeln auswählen und Bestätigen.
Ein Layout ist nur dann ein Ersetzungskandidat, wenn alle seine zugewiesenen Regeln zum aktuellen Request passen (Regeln werden mit UND verknüpft). Innerhalb einer einzelnen Regel gilt die Standard-Shopware-Container-Logik (UND-Container, ODER-Container etc.).
Die Matching-Schleife, Schritt für Schritt
Abschnitt betitelt „Die Matching-Schleife, Schritt für Schritt“Konkret beim Aufruf einer Kategorienseite in einem bestimmten Verkaufskanal:
- Shopware lädt die Seite und das der Kategorie zugewiesene Basislayout.
- Das Plugin ermittelt die für den Basistyp erlaubten Ersetzungstypen (z. B. für
product_list→ den Eintrag Listing-Seite unter Ersetzungstypen). - Das Plugin prüft den Ersetzungsmodus für Kategorienseiten:
- Mit Standardlayout → nur fortfahren, wenn das Basislayout das Shopware-Standardlayout ist.
- Zugewiesen, um ersetzbares Layout zu ersetzen → nur fortfahren, wenn das Basislayout in der Liste Ersetzbare Layouts für Kategorienseiten ist.
- Alle → fortfahren.
- Sonst → zurückkehren, keine Ersetzung.
- Das Plugin lädt jede CMS-Seite, der Regeln zugewiesen sind, sortiert nach
rule.priority(niedrigste Priorität zuerst, im Einklang mit Shopwares eigener Regel-Sortierung). Es geht sie in Seiten von 100 durch (bis zu einem harten Limit — siehe Performance). - Für jeden Kandidaten wertet es alle zugewiesenen Regeln gegen den aktuellen Request aus (Verkaufskanal, Navigations-ID, Kunde, Datum etc.).
- Der erste Kandidat, dessen Regeln alle passen, wird verwendet. Das Plugin rendert das Layout für die Seite neu und übergibt es Shopware.
- Wenn nichts passt, bleibt das Basislayout.
Dieselbe Schleife läuft für Produkte (über ProductPageLoadedEvent) und Landing-Seiten (über LandingPageLoadedEvent), mit ihren jeweiligen Ersetzungsmodi und -typen.
Drei eigene Regelbedingungen
Abschnitt betitelt „Drei eigene Regelbedingungen“Zusätzlich zu den Standard-Regelbedingungen von Shopware fügt das Plugin drei eigene hinzu:
- Ist Startseite [P2Lab Layout Zuweiser] — passt nur auf der Hauptnavigationskategorie des Verkaufskanals (seiner Startseite). Siehe Warnung zur Kombination mit anderen Bedingungen.
- Element in Kategorie [P2Lab Layout Zuweiser] — passt, wenn das betrachtete Produkt oder die Kategorie eine der aufgelisteten Kategorien ist (oder sich darin befindet).
- Element in Kategorie mit Unterkategorien [P2Lab Layout Zuweiser] — wie oben, matcht aber auch nachgeordnete Kategorien (nutzt den
pathder Kategorie, um den Baum zu durchlaufen).
Details siehe Eigene Regelbedingungen.
Konfiguration pro Verkaufskanal
Abschnitt betitelt „Konfiguration pro Verkaufskanal“Jede Einstellung im Konfigurationsformular des Plugins ist pro Verkaufskanal. Verwenden Sie den Verkaufskanal-Umschalter oben in Einstellungen → Erweiterungen → Advanced Layouts Assigner, um unterschiedliche Ersetzungsmodi, ersetzbare Layouts und Ersetzungstypen pro Kanal zu pflegen — mit Rückfall auf den Scope “Alle Verkaufskanäle” für gemeinsame Defaults.
So hält das Plugin denselben Kategoriebaum für zwei Verkaufskanäle mit völlig unterschiedlichen Layout-Strategien nutzbar.
Weiter: praktisch durchgehen
Abschnitt betitelt „Weiter: praktisch durchgehen“Nachdem das Modell klar ist, gehen Sie ein minimales Beispiel durch: Erste Layout-Ersetzung.