Zum Inhalt springen

Auflösungs-Reihenfolge

Eine Aufschlüsselung dessen, was passiert, wenn ein Storefront-Seite Inhalte rendert, die Dynamic Variables verwenden.

  1. Platzhalter finden. Das Plugin scannt den gerenderten Inhalt nach {key}-Mustern. Alles zwischen { und }, das dem Key-Format entspricht, ist ein Kandidat.
  2. Variable nachschlagen. Jeder Kandidaten-Key wird gegen die Variablenliste geprüft. Integrierte werden zuerst geprüft, dann eigene Variablen.
  3. Aktiv-Prüfung. Inaktive Variablen werden übersprungen — der Platzhalter bleibt unverändert.
  4. 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).
  5. 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.
  6. Sprachauswahl. Innerhalb der gewählten Zeile wird die Übersetzung für die aktuelle Storefront-Sprache gewählt. Falls leer, wird die Systemstandardsprache verwendet.
  7. Verschachtelte Auflösung. Falls der Wert {anotherKey}-Referenzen enthält, werden diese eine Ebene tief aufgelöst (siehe Verschachtelte Variablen).
  8. Ersetzen. Der aufgelöste String ersetzt den Platzhalter in der gerenderten Ausgabe.
  9. Verwendete Variablen erfassen. Das Plugin merkt sich, welche Variablen tatsächlich auf der Seite erschienen sind, sodass es nur ihr CSS / JS injizieren kann.
  10. Assets injizieren. Die CSS-Zeilen der verwendeten Variablen werden in einen <style>-Block zusammengefasst. Die Skript-Zeilen gehen in einen <script>-Block.
  • 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.

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.

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.