Warenkorb-Zähler für Shopware 6: Installation und Konfiguration
Installation, Befüllung des Index und Konfiguration des Badges „In mehr als 20 Warenkörben“ für Shopware 6.5, 6.6 und 6.7.
Das Plugin DfCartPopularity zeigt auf der Produktseite ein Badge mit der Anzahl der Warenkörbe, die das Produkt aktuell enthalten, zum Beispiel „In mehr als 20 Warenkörben“. Die Zählung basiert auf Ihren echten Warenkorbdaten.
Voraussetzungen
- Shopware 6.5, 6.6 oder 6.7 als selbst gehostete Installation (Shopware Cloud SaaS erlaubt keine Server-Plugins)
- PHP 8.1 oder höher
- SSH-Zugang für die Konsolenbefehle und die Theme-Kompilierung
Installation
Laden Sie das ZIP über Erweiterungen und dann Meine Erweiterungen hoch, oder kopieren Sie den Ordner nach custom/plugins/, und führen Sie aus:
bin/console plugin:refresh
bin/console plugin:install --activate DfCartPopularity
bin/console cache:clear
./bin/build-storefront.sh
Die Storefront-Kompilierung ist einmalig erforderlich, damit das Stylesheet des Badges eingebunden wird. In einer über eine Deployment-Pipeline gesteuerten Umgebung ist dieser Schritt in der Regel bereits Teil des Standardprozesses.
Index befüllen
Nach der Installation ist der Index leer: Die Zähler starten bei null und füllen sich, während Kunden ihre Warenkörbe ändern. Um ab dem ersten Tag glaubwürdige Zahlen anzuzeigen, starten Sie den Wiederaufbau:
bin/console df:cart-popularity:rebuild
Der Befehl liest die bereits im Shop gespeicherten Warenkörbe und befüllt den Index. Er ist idempotent und kann gefahrlos erneut ausgeführt werden. Die Option --truncate leert den Index vor dem Wiederaufbau.
Bereits in Bestellungen umgewandelte Warenkörbe entfernt Shopware aus der Warenkorbtabelle. Der Wiederaufbau sieht also nur aktive Warenkörbe, was genau dem gewünschten Umfang entspricht.
Konfiguration
Einstellungen, System, Plugins, DataFirefly Cart Popularity, dann Konfigurieren. Jede Option lässt sich pro Verkaufskanal überschreiben.
Anzeige
- Badge aktivieren: Das Tracking läuft auch bei deaktiviertem Badge weiter, damit die Daten bereitstehen, sobald Sie es einschalten.
- Mindestschwelle (Standard 5): Unterhalb dieser Anzahl von Warenkörben wird nichts ausgegeben.
- Anzeigemodus: gerundete Stufe oder exakte Zahl.
- Stufenschritt (Standard 10): Ein Zählstand von 23 wird als „mehr als 20“ angezeigt. Liegt der Zählstand unter dem Schritt, wechselt das Plugin automatisch zur exakten Zahl, statt eine falsche Stufe anzugeben.
- Position: über oder unter der Kaufbox.
- Badge-Stil: weicher Hintergrund, umrandet oder nur Text.
Zählregeln
- Zeitfenster (Standard 7 Tage): Es werden nur Warenkörbe gezählt, die in diesem Zeitraum aktualisiert wurden. Der Wert 0 deaktiviert das Fenster.
- Nur aktive Warenkörbe: schließt bereits bestellte Warenkörbe aus.
- Auf den Verkaufskanal begrenzen: verhindert, dass ein Peak in einem Shop den Zähler eines anderen aufbläht.
- Varianten zusammenfassen: Alle Varianten eines Produkts teilen sich den Zähler des Hauptprodukts. Deaktivieren Sie die Option, wenn jede Variante einen eigenen Zähler benötigt.
Performance und Aufbewahrung
- Cache-Laufzeit (Standard 900 Sekunden): Die Zählabfrage läuft einmal pro Laufzeit und Produkt. Der Wert 0 deaktiviert den Cache. Der Cache wird beim Speichern der Konfiguration automatisch geleert.
- Aufbewahrung (Standard 60 Tage): Ältere Einträge werden gelöscht. Die Bereinigung läuft automatisch, höchstens einmal pro Stunde, unabhängig von der Message Queue.
Texte anpassen
Der Badge-Text liegt in den Shopware-Snippets. Einstellungen, Snippets, dann nach dfCartPopularity suchen. Drei Schlüssel stehen zur Verfügung:
dfCartPopularity.badge.textTier: Stufenmodus, enthält den Platzhalter für die ZahldfCartPopularity.badge.textExact: Exaktmodus, enthält den Platzhalter für die ZahldfCartPopularity.badge.textSingular: Exaktmodus mit einem einzigen Warenkorb
Der Platzhalter wird %count% geschrieben und muss in Ihrer Formulierung erhalten bleiben. Übersetzungen in Englisch, Deutsch, Französisch, Spanisch, Italienisch und Polnisch sind enthalten.
Wie die Zählung funktioniert
Shopware serialisiert den gesamten Warenkorb in eine Payload-Spalte der Tabelle cart, häufig komprimiert. Keine SQL-Abfrage kann daher wissen, was ein Warenkorb enthält, ohne ihn zu deserialisieren. Das Plugin pflegt eine eigene Tabelle df_cart_popularity, die Warenkorb-Token, Produkt, Verkaufskanal, Menge und Bestellkennzeichen verknüpft.
Diese Tabelle wird bei jeder Persistierung des Warenkorbs über CartSavedEvent mit zwei indizierten Abfragen synchronisiert. Das Event CartConvertedEvent markiert die Zeilen beim Bestellabschluss als bestellt. Die Anzeige führt dann eine einfache eindeutige Zählung auf einem zusammengesetzten Index aus, die im Cache liegt.
Es werden keine personenbezogenen Daten gespeichert: Der Index enthält nur das Warenkorb-Token, einen pseudonymen technischen Bezeichner, die Produktreferenz, den Verkaufskanal und Zeitstempel.
CLI-Befehle
bin/console df:cart-popularity:rebuild
bin/console df:cart-popularity:rebuild --truncate
bin/console df:cart-popularity:cleanup
bin/console df:cart-popularity:cleanup --days=30
Fehlerbehebung
Das Badge erscheint nicht
Prüfen Sie der Reihe nach: Das Badge ist für den betreffenden Verkaufskanal aktiviert, die Anzahl der Warenkörbe erreicht die Schwelle, das Zeitfenster schließt nicht alle Warenkörbe aus, und die Storefront wurde nach der Installation neu kompiliert. Leeren Sie außerdem den HTTP-Cache, wenn die Seite aus dem Cache ausgeliefert wird.
Das Badge erscheint ohne Styling
Das Stylesheet des Plugins wird in die Theme-Kompilierung eingebunden. Führen Sie ./bin/build-storefront.sh oder bin/console theme:compile erneut aus.
Der Wiederaufbau meldet übersprungene Warenkörbe
Diese Warenkörbe nutzen ein Payload-Format, das der Befehl nicht lesen kann, typischerweise eine ausgelagerte Warenkorbspeicherung. Sie werden bei der nächsten Änderung durch den Kunden normal indiziert, da das ereignisbasierte Tracking unabhängig vom Speichermodus arbeitet.
Deinstallation
Die Deinstallation mit Löschung der Nutzerdaten entfernt die Tabelle df_cart_popularity und die Plugin-Konfiguration. Werden die Nutzerdaten behalten, bleibt die Tabelle bestehen und die Zähler laufen bei einer Neuinstallation unverändert weiter.