Konzepte
Diese Seite erklärt die Ideen hinter dem Listing Interrupter — was ein Slot wirklich ist, warum das Raster immer gleichmäßig abschließt und warum manches bewusst nicht konfigurierbar ist. Für die Nutzung brauchen Sie sie nicht, aber sie macht das Verhalten vorhersehbar statt überraschend.
Begriffe
Diese Begriffe verwenden der Admin, diese Dokumentation und der Code des Plugins gleichermaßen.
- Interrupter (oder Kachel) — ein Stück Werbeinhalt, das in ein Produktlisting-Raster eingefügt wird. Das, was Sie anlegen und verwalten.
- Banner — der Kacheltyp, der heute ausgeliefert wird: Hintergrundbild, Badge-Zeile, Überschrift, Unterzeile, CTA-Text und Link, Farben, Ausrichtung.
- Position — der Rasterslot, den die Kachel belegt, ab 1 gezählt. Position 1 liegt vor dem ersten Produkt.
- Breite — wie breit die Kachel ist, in Produktzellen (
1,2,3, …) oder ganze Zeile. - Ziel — wo eine Kachel erscheinen darf: die angehakten Kategorien in den zugewiesenen Verkaufskanälen.
- Seitenbereich — auf welchen Listing-Seiten eine Kachel erscheint.
- Verfügbarkeitsregel — eine bestehende Rule-Builder-Regel, die einer Kachel zugewiesen ist. Deckt Zielgruppe und Zeitraum ab.
- Geräte-Überschreibung — ein Tablet- oder Mobil-spezifischer Wert für ein Feld, das sonst vom Desktop erbt.
Eine Listing-Seite ist ein Raster aus Zellen
Eine Kategorieseite zeigt eine feste Anzahl Elemente — sagen wir 24 — in Zeilen, deren Spaltenzahl aus Ihrem Theme kommt (Shopwares Standard sind 4 Spalten auf dem Desktop, 2 auf dem Tablet, 1 auf dem Handy).
Das Plugin behandelt diese Seite als 24 Zellen, nicht als 24 Produkte. Eine Kachel belegt Zellen:
- Eine Kachel mit der Breite
NbelegtNZellen, und die Seite lädtNProdukte weniger. - Eine Kachel über die ganze Zeile fügt eine eigene Zeile hinzu und belegt gar keine Produktzellen.
Deshalb schließt das Raster auch mit einer Kachel noch mit einer vollständigen Zeile ab. Und deshalb gehen die verdrängten Produkte nicht verloren: Die folgende Seite beginnt entsprechend früher, jedes Produkt bleibt erreichbar, und die Seitenzahl im Seitenwähler wächst mit.
Die Alternative — die Kachel einfach als 25. Zelle anzuhängen — war der ursprüngliche Entwurf des Plugins. Er wurde ersetzt, weil eine Seite, die mit einem einzelnen verwaisten Produkt endet, wie ein Layoutfehler aussieht und nicht wie eine Kampagne.
Positionen sind Zellennummern, keine Produktnummern
Weil eine Kachel Zellen belegt, sind „der 5. Slot" und „nach dem 4. Produkt" nicht mehr dasselbe, sobald eine breitere Kachel davor sitzt. Das Plugin zählt Zellen: Eine drei Zellen breite Kachel in Slot 1 macht den nächsten Produktslot zur Nummer 4.
Die Platzierungsfläche durchläuft das Raster mit genau derselben Rechnung wie die Storefront — deshalb ist die Zahl auf einem Slot-Punkt genau die Position, die beim Ablegen gespeichert wird.
Wenn mehrere Kacheln auf derselben Seite landen
Kacheln auf derselben Position teilen sich die Zeile, sortiert nach Priorität, bei Gleichstand die ältere zuerst. Innerhalb einer Einfügelücke spielt die Storefront die Kacheln in Positionsreihenfolge aus, das DOM der Seite entspricht also immer dem, was die Fläche gezeigt hat.
Warum der Kachel-Editor eigens gebaut ist
Der Inhalt einer Kachel folgt einem festen Schema und liegt auf der eigenen Entität des Plugins. Es ist kein CMS-Slot, der beliebige CMS-Elemente aufnehmen kann.
Das ist ein bewusster Tausch. CMS-Elemente aufzunehmen bringt unbegrenzte Flexibilität, kostet aber bei jeder Bearbeitung einen Umweg über den Erlebniswelten-Editor, eine deutlich schwächere Live-Vorschau und — in der konkurrierenden Umsetzung dieser Idee — eine Framework-Abhängigkeit, die man vorher installieren muss. Das Versprechen hier ist eine Kachel, die in unter einer Minute steht und visuell platziert wird. Ein festes Schema mit sofortiger Vorschau kann dieses Versprechen halten, ein Slot-Umweg nicht.
Die Konsequenz: Sie können kein CMS-Element von Dritten in eine Kachel einbetten. Neue Inhaltsformen kommen stattdessen als neue Kacheltypen.
Die Vererbung löst der Browser auf, nicht eine Geräteerkennung
Tablet und Mobil erben vom Desktop, bis Sie ein Feld überschreiben. Diese Auflösung passiert serverseitig, für alle drei Geräte auf einmal, und die Seite trägt anschließend alle drei Antworten in ihrem Markup — als Bootstrap-Spaltenklassen, Anzeige-Hilfsklassen und einen kleinen abgegrenzten Style-Block für Farben, die sich unterscheiden.
Ihr Browser wählt daraus die Fassung, die bei seiner aktuellen Breite gilt. Nichts erkennt ein Gerät.
Das ist wichtig, weil Listing-Seiten HTTP-gecacht und aus demselben Cache-Eintrag an jede Bildschirmgröße ausgeliefert werden. Ein einzelnes „erkanntes" Gerät ins gecachte HTML zu brennen, würde allen anderen die falsche Kachel ausliefern. Der Tausch: Eine Kachel ohne Überschreibungen wird exakt so ausgespielt wie vor der Einführung der Überschreibungen — das zusätzliche Markup entsteht nur, wenn eine Überschreibung tatsächlich abweicht.
Sichtbarkeit je Gerät ist reine Darstellung
Eine Kachel auf dem Handy auszublenden blendet die Kachel aus. Es gibt dem Handy nicht seine Produkte zurück.
Die Verdrängung wird auf dem Server entschieden, bevor überhaupt ein Browser beteiligt ist, und eine gecachte Seite kann nicht je Bildschirmbreite unterschiedlich viele Produkte enthalten, ohne den Cache pro Gerät aufzuteilen. Eine Bildschirmbreite, auf der die Kachel ausgeblendet ist, zeigt daher dasselbe Raster ohne die Kachel: Die Zellen bleiben reserviert, und die Produkte, die auf die nächste Seite gerückt sind, bleiben dort.
Dasselbe gilt für Breiten-Überschreibungen je Gerät — für die Verdrängung zählt nur die Desktop-Breite.
Regeln werden einmal ausgewertet, von Shopware
Das Plugin wertet die Bedingungen einer Regel nie selbst aus. Es fragt den Verkaufskanal-Kontext, welche Regeln Shopware für diese Anfrage bereits als zutreffend ermittelt hat, und zeigt die Kacheln, deren Regeln alle in dieser Menge liegen.
Genau nach dieser Menge variiert auch Shopwares HTTP-Cache seinen Cache-Schlüssel. Dadurch kann eine Seite, die für eine Zielgruppe gecacht wurde — ein Gast oder eine Besucherin außerhalb des Kampagnenzeitraums —, nie an einen Kontext ausgeliefert werden, in dem andere Regeln zutreffen. Eine eigenständige Auswertung der Regeldaten würde diese Ausrichtung brechen und die Sichtbarkeit von Kacheln zwischen Kontexten durchsickern lassen.
Eine Folge davon: Eine Seite, die bereits im Cache liegt, wird nicht in dem Moment neu gerendert, in dem sich ein Zeitfenster öffnet oder schließt. Sie aktualisiert sich mit ihrer normalen Cache-Laufzeit.
Warum die Übersichtsseite nicht „Regel trifft nicht zu" sagt
Das Status-Badge sagt Ihnen, ob eine Kachel aktiv ist. Es behauptet nicht zu wissen, ob die Regeln der Kachel zutreffen, denn im Admin gibt es keine Kundin: keinen Warenkorb, keine Kundengruppe, keine Sitzung, gegen die sich eine Regel prüfen ließe. Ein Badge, das rät, würde Ihnen manchmal sagen, eine funktionierende Kachel sei kaputt — und das ist schlimmer, als gar nichts zu sagen.
Die Cache-Invalidierung ist zielgerichtet
Das Speichern einer Kachel aktualisiert die Storefront ohne manuelles Cache-Leeren — aber es leert den Cache nicht.
Das Plugin ermittelt genau, welche Kategorien eine Änderung betrifft, und invalidiert nur deren Listing-Routen, über Shopwares eigene Cache-Tags für die Listing-Route. Das deckt Umhängen ab (die Kategorie, die eine Kachel verlassen hat, und die neue), einfache Inhaltsänderungen und das Löschen.
Den gesamten Cache zu leeren würde dasselbe „ohne manuelles Leeren"-Versprechen erfüllen — und dabei jede Listing-Seite wegwerfen, die mit Ihrer Änderung nichts zu tun hatte.
Die Vorschau-Auswahl gehört nicht zur Kachel
Verkaufskanal und Kategorie über der Platzierungsfläche gibt es, um die Fläche konkret zu machen. Sie werden nie gespeichert.
Eine Kachel hat eine Position, und diese Position bedeutet in jeder angesteuerten Kategorie dasselbe — es gibt also keine „bevorzugte" Kategorie, die man speichern müsste. Die Auswahl ist mit dem ersten zugewiesenen Kanal und der ersten Kategorie der Kachel vorbelegt, weshalb Sie sie selten anfassen müssen, und sie wird beim erneuten Öffnen der Kachel zurückgesetzt.
Die praktische Folge, die auch in der Platzierungsanleitung steht: Wer eine Kachel verschiebt, verschiebt sie in jeder Kategorie, auf die sie ausgerichtet ist. Duplizieren ist der Weg, einer einzelnen Kategorie eine eigene Platzierung zu geben.
