Benachrichtigungs-Center für Shopware 6 — Installation, Konfiguration und technische Dokumentation
Das Benachrichtigungs-Center installieren, konfigurieren und erweitern: Glocke im Header, automatische Produkt- und Gutschein-Benachrichtigungen, Zeitplanung, Targeting und KPIs für Shopware 6.5, 6.6 und 6.7.
Überblick
Das DataFirefly Benachrichtigungs-Center fügt dem Storefront-Header von Shopware 6 eine Benachrichtigungsglocke hinzu, direkt neben dem Warenkorb. Ein rotes Badge zeigt die Anzahl ungelesener Nachrichten (ab neun als „9+“ dargestellt), und ein Dropdown-Panel präsentiert Ihre Ankündigungen, neuen Produkte und Gutscheincodes.
Das Plugin verwaltet drei Benachrichtigungstypen: manuell verfasste Ankündigungen, Produkt-Benachrichtigungen, die automatisch für jedes neue Produkt erstellt werden (Bild und Link in Echtzeit aufgelöst), und Gutscheincodes mit einem Ein-Klick-Kopierbutton. Jede Benachrichtigung kann zeitlich geplant, nach Kundengruppe und Verkaufskanal ausgerichtet, priorisiert und über Aufruf- und Klick-KPIs ausgewertet werden.
Ein Plugin, ein ZIP, kompatibel mit Shopware 6.5, 6.6 und 6.7 — einschließlich der Vite-basierten Administration von 6.7, die vorkompiliert und ohne Build-Schritt ausgeliefert wird.
Voraussetzungen
- Shopware 6.5, 6.6 oder 6.7 (
shopware/core~6.5 || ~6.6 || ~6.7) - Kommandozeilenzugriff zum Leeren des Caches und Installieren der Assets
- Keine externe Abhängigkeit, kein Drittanbieterdienst
Installation
- Gehen Sie in der Administration zu Erweiterungen → Meine Erweiterungen → Erweiterung hochladen und wählen Sie das ZIP.
- Installieren und anschließend aktivieren Sie das Plugin.
- Leeren Sie den Cache und installieren Sie die Assets:
bin/console plugin:refresh
bin/console plugin:install --activate DffNotificationCenter
bin/console assets:install
bin/console cache:clear
Leeren Sie nach Installation oder Update auch den Browser-Cache (Strg+F5) auf der Administrationsseite, um das Modul neu zu laden.
Shopware 6.7 (Vite-Administration)
Das Administrationsmodul wird vorkompiliert mit einer Vite-Datei entrypoints.json ausgeliefert. Es lädt unverändert auf 6.5, 6.6 und 6.7 ohne Build-Schritt. Führen Sie nach jedem Update einfach aus:
bin/console assets:install
bin/console cache:clear
Konfiguration
Gehen Sie zu Erweiterungen → Meine Erweiterungen → Benachrichtigungs-Center → Konfigurieren. Die Einstellungen sind pro Verkaufskanal skalierbar.
Benachrichtigungsglocke
- Glocke aktivieren (Standard: ja): zeigt oder verbirgt die Glocke im Storefront.
- Maximale Anzahl angezeigter Benachrichtigungen (Standard: 10): serverseitig auf 1 bis 50 begrenzt.
- Hintergrund-Aktualisierungsintervall (Standard: 60 s): Abfrageintervall,
0zum Deaktivieren. - Ton (Standard: nein): spielt bei einer neuen Benachrichtigung einen Ton ab.
- Animation (Standard: ja): animiert die Glocke bei ungelesenen Benachrichtigungen.
Automatische Produkt-Benachrichtigungen
- Für jedes neue Produkt eine Benachrichtigung erstellen (Standard: ja).
- Nur für aktive Produkte (Standard: ja).
- Automatischer Ablauf (Standard: 30 Tage,
0= nie): danach wird die Produkt-Benachrichtigung nicht mehr ausgespielt.
Automatische Gutschein-Benachrichtigungen
- Benachrichtigung erstellen, wenn eine Aktion mit Code angelegt wird (Standard: nein, muss ausdrücklich aktiviert werden).
Die Gutschein-Benachrichtigung wird erstellt, sobald eine aktive Aktion einen globalen Code besitzt. Individuelle Codes werden systembedingt nie ausgespielt.
Benachrichtigungen in der Administration verwalten
Das Verwaltungsmodul befindet sich unter Marketing → Benachrichtigungs-Center. Dort erstellen, planen, targeten und priorisieren Sie Ihre Ankündigungen und prüfen die Aufruf-/Klick-KPIs.
Drei Typen stehen zur Verfügung:
- Ankündigung (
manual): freier Titel, Nachricht, Button-Label und Link. - Produkt (
product): mit einem Produkt verknüpft; das Titelbild und der Link zur Produktseite werden bei jedem Rendern in Echtzeit aufgelöst — nie ein toter Link. - Gutscheincode (
promo): zeigt einen Code mit einem clientseitigen Kopierbutton.
Zeitplanung, Targeting und Priorität
- Zeitplanung: Daten
validFrom/validUntil; eine Benachrichtigung außerhalb ihres Zeitfensters wird nicht ausgespielt. - Kundengruppen-Targeting: beschränkt die Ausspielung auf eine bestimmte Kundengruppe (leer = alle).
- Verkaufskanal-Targeting: beschränkt auf einen Kanal (leer = alle), nützlich für Multi-Shop-Setups.
- Priorität: Ganzzahl; höhere Prioritäten werden zuerst angezeigt, dann nach Erstellungsdatum absteigend sortiert.
Verhalten auf Client-Seite
Die Glocke wird über eine Twig-Erweiterung (sw_extends) in den Header eingefügt. Wenn Ihr Theme den Header stark anpasst, fügt ein JavaScript-Fallback die Glocke automatisch neben dem Warenkorb ein.
Das Panel ruft die Benachrichtigungen über einen AJAX-Aufruf ab. Das Badge zeigt die Anzahl der Ungelesenen, mit optionalem Ton und Animation sowie einer konfigurierbaren Hintergrundaktualisierung. Die Oberfläche ist barrierefrei: ARIA-Attribute, Tastaturnavigation und ein Bottom-Sheet-Layout auf Mobilgeräten.
Lesestatus: Bei angemeldeten Kunden wird er serverseitig gespeichert (Tabelle dff_notification_read) und daher geräteübergreifend synchronisiert. Bei Gästen bleibt er im localStorage des Browsers — es werden keine personenbezogenen Daten erhoben.
Technische Architektur
Das Plugin folgt den Shopware-Konventionen: über die Data Abstraction Layer (DAL) deklarierte Entitäten, ein Storefront-Controller, der JSON zurückgibt, Event-Subscriber und eine SQL-Migration. Kein Override — Templates werden über sw_extends erweitert, der Code ist zu 100 % nativ.
Entitäten und die Data Abstraction Layer
Die Hauptentität dff_notification (NotificationDefinition) trägt die Felder: type, active, priority, validFrom, validUntil, customerGroupId, salesChannelId, productId (+ productVersionId), promotionId, promoCode, views und clicks. Die übersetzbaren Felder title, message, buttonLabel und linkUrl werden von der Übersetzungsentität dff_notification_translation getragen.
Assoziationen: ManyToOne zu customer_group, sales_channel, product und promotion; OneToMany zu dff_notification_read (Lesestatus pro Kunde). Die Definitionen werden mit dem Tag shopware.entity.definition registriert und für die API freigegeben (ApiAware).
Datenbankschema
Die Migration Migration1781049600NotificationCenter erstellt drei Tabellen:
dff_notification: die Benachrichtigung, mit Indizes aufactiveund auf(product_id, product_version_id). Fremdschlüssel zucustomer_groupundsales_channel(ON DELETE SET NULL) sowie zuproduct(ON DELETE CASCADE).dff_notification_translation: Übersetzungen pro Sprache (title,message,button_label,link_url).dff_notification_read: Benachrichtigungs-/Kundenpaare, mit einem eindeutigen Index auf(dff_notification_id, customer_id), um doppelte Lesevorgänge zu verhindern.
Storefront-AJAX-Routen
Die Routen werden in XML deklariert (Resources/config/routes.xml), um von Shopware 6.5 bis 6.7 kompatibel zu bleiben (Symfony 6.x und 7.x). Der Controller erweitert AbstractController — nicht StorefrontController — da er nur JSON zurückgibt und setTwig() in 6.7 entfernt wurde.
GET /dff-nc/list→list(): gibt ausspielbare Benachrichtigungen zurück und erhöht deren Aufrufe.POST /dff-nc/read→markRead(): markiert serverseitig als gelesen (angemeldete Kunden); bei Gästen meldet die Antwortclient-Speicherung.POST /dff-nc/click/{id}→click(): erhöht den Klickzähler.
Ausspiellogik (list-Controller)
Die DAL-Abfrage filtert Benachrichtigungen mit active = true, innerhalb ihres Gültigkeitsfensters (validFrom ≤ jetzt ≤ validUntil, Null-Grenzen erlaubt), passend zum aktuellen Verkaufskanal (oder null) und zur aktuellen Kundengruppe (oder null), sortiert nach Priorität und dann nach Erstellungsdatum absteigend. Verknüpfte Produkte werden anschließend dynamisch aufgelöst (Assoziation cover.media): Eine Produkt-Benachrichtigung, deren Produkt gelöscht oder im Kanal nicht verfügbar ist, wird stillschweigend ausgeblendet. Die Aufrufe der tatsächlich ausgespielten Benachrichtigungen werden in einer einzigen Abfrage erhöht.
Automatische Benachrichtigungen (Subscriber)
ProductSubscriber lauscht auf product.written. Bei jedem Produkt-Insert auf der Live-Version (Varianten mit einer parentId werden übersprungen) und wenn die Option aktiviert ist, erstellt er eine product-Benachrichtigung — unter Beachtung des Filters „nur aktive Produkte“, der konfigurierten Lebensdauer (validUntil) und einer Dublettenprüfung pro Produkt.
PromotionSubscriber lauscht auf promotion.written. Da die Administration zunächst die Aktion anlegt und dann ihren Code und ihr Aktiv-Flag durch nachfolgende Updates setzt, reagiert er sowohl auf Inserts als auch auf Updates. Eine promo-Benachrichtigung wird nur erstellt, wenn die Aktion aktiv ist und einen globalen Code besitzt, wobei die Daten validFrom/validUntil der Aktion übernommen werden, mit einer Dublettenprüfung pro Aktion.
Internationalisierung
Drei Sprachen werden für Storefront und Administration mitgeliefert: Französisch, Englisch und Deutsch (Snippets fr-FR, en-GB, de-DE). Standardtitel und -nachrichten für Produkt- und Gutschein-Benachrichtigungen werden über den Übersetzungsdienst generiert (dffNc.*-Schlüssel).
Datenschutz (DSGVO)
Das Plugin erhebt keine personenbezogenen Daten. Der Lesestatus von Gästen bleibt in ihrem Browser (localStorage); der Status angemeldeter Kunden wird serverseitig gespeichert und mit ihrem Konto verknüpft. Aufruf- und Klickzähler werden auf Benachrichtigungsebene aggregiert, ohne individuelles Profiling.
Deinstallation
Bei der Deinstallation werden die Tabellen dff_notification_read, dff_notification_translation und dff_notification gelöscht — es sei denn, die Option „Benutzerdaten behalten“ ist aktiviert; dann bleiben sie unverändert erhalten.
Fehlerbehebung
- Die Glocke erscheint nicht: Prüfen Sie, ob die Glocke in der Konfiguration aktiviert ist, führen Sie
assets:installundcache:clearerneut aus und leeren Sie den Browser-Cache. Der JS-Fallback fügt sie neben dem Warenkorb ein, falls das Theme den Header überschreibt. - Keine Produkt-Benachrichtigung erstellt: Die Option muss aktiviert sein, das Produkt muss ein Stammprodukt (keine Variante) und, falls der Filter aktiv ist, als aktiv markiert sein.
- Keine Gutschein-Benachrichtigung erstellt: Die Option ist standardmäßig deaktiviert; die Aktion muss aktiv sein und einen globalen Code besitzen (individuelle Codes werden nicht ausgespielt).
- Administrationsmodul lädt auf 6.7 nicht: Führen Sie
assets:installund danncache:clearerneut aus und erzwingen Sie ein Neuladen des Browsers (Strg+F5).