Auflösungs-Reihenfolge
Eine Aufschlüsselung dessen, was passiert, wenn ein Storefront-Seite Inhalte rendert, die Dynamic Variables verwenden.
Die Pipeline
Abschnitt betitelt „Die Pipeline“- Platzhalter finden. Das Plugin scannt den gerenderten Inhalt nach
{key}-Mustern. Alles zwischen{und}, das dem Key-Format entspricht, ist ein Kandidat. - Variable nachschlagen. Jeder Kandidaten-Key wird gegen die Variablenliste geprüft. Integrierte werden zuerst geprüft, dann eigene Variablen.
- Aktiv-Prüfung. Inaktive Variablen werden übersprungen — der Platzhalter bleibt unverändert.
- Bereichsprüfung. Die erlaubten Bereiche der Variable müssen den aktuellen Bereich enthalten (CMS / Produkt / Kategorie), oder die Bereichsliste der Variable muss leer sein (= jeder).
- Kanalauswahl. Aus den Wertzeilen der Variable wird die Zeile gewählt, die zum aktuellen Verkaufskanal passt. Wenn keine, dann die globale Zeile (ohne Kanal). Falls keine davon existiert, bleibt der Platzhalter unverändert.
- Sprachauswahl. Innerhalb der gewählten Zeile wird die Übersetzung für die aktuelle Storefront-Sprache gewählt. Falls leer, wird die Systemstandardsprache verwendet.
- Verschachtelte Auflösung. Falls der Wert
{anotherKey}-Referenzen enthält, werden diese eine Ebene tief aufgelöst (siehe Verschachtelte Variablen). - Ersetzen. Der aufgelöste String ersetzt den Platzhalter in der gerenderten Ausgabe.
- Verwendete Variablen erfassen. Das Plugin merkt sich, welche Variablen tatsächlich auf der Seite erschienen sind, sodass es nur ihr CSS / JS injizieren kann.
- Assets injizieren. Die CSS-Zeilen der verwendeten Variablen werden in einen
<style>-Block zusammengefasst. Die Skript-Zeilen gehen in einen<script>-Block.
Caching
Abschnitt betitelt „Caching“- Variablendefinitionen werden pro Request gecacht, mit Schlüssel Verkaufskanal + Bereich.
- Der erste Inhalts-Scan in einem Request lädt die Daten einmal; jeder weitere Scan im selben Request verwendet sie wieder.
- Über Requests hinweg greift der Standard-HTTP- / Objekt-Cache von Shopware. Nach Wertänderungen im Admin den Cache leeren.
Unbekannte Keys
Abschnitt betitelt „Unbekannte Keys“Das Plugin entfernt unbekannte Platzhalter nicht. Wenn Sie {tpyo} schreiben, rendert das Storefront wörtlich {tpyo}. Das ist beabsichtigt — Tippfehler werden bei der Qualitätssicherung sichtbar, statt Inhalte stillschweigend zu verschlucken.
Wenn Sie strengeres Verhalten wollen (z. B. unbekannte Platzhalter entfernen), können Sie den Replacer-Service des Plugins erweitern — er ist mit dem Standard-Symfony-DI-Container registriert und folgt den üblichen Decoration-Regeln.
Reihenfolge mit anderen Plugins
Abschnitt betitelt „Reihenfolge mit anderen Plugins“Der Dynamic-Variables-Replacer läuft nach dem Standard-CMS-Rendering von Shopware. Das bedeutet:
- Er sieht das finale HTML-Output von CMS-Elementen — inklusive Inhalten, die andere Plugins produziert haben.
- Wenn ein anderes Plugin dieselben Felder nach Dynamic Variables noch einmal umschreibt, kann es rohe
{...}-Platzhalter wieder einfügen, die der Dynamic-Variables-Replacer nicht mehr sieht. In der Praxis ist das selten — aber wenn Sie einen eigenen Subscriber auf denselben Events schreiben, registrieren Sie ihn mit einer Priorität, die Ihnen die gewünschte Position in der Kette gibt.