# Benachrichtigungs-Center für Shopware 6 — Installation, Konfiguration und technische Dokumentation

> Ü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),…

- Seite: <https://www.datafirefly.com/de/documentation/dff-notification-center-shopware/>
- Sprache: de
- Aktualisiert am: 2026-07-08
- Weitere Sprachen: [fr](https://www.datafirefly.com/documentation/dff-notification-center-shopware/index.md), [en](https://www.datafirefly.com/en/documentation/dff-notification-center-shopware/index.md), [es](https://www.datafirefly.com/es/documentation/dff-notification-center-shopware/index.md), [it](https://www.datafirefly.com/it/documentation/dff-notification-center-shopware/index.md), [pl](https://www.datafirefly.com/pl/documentation/dff-notification-center-shopware/index.md), [nl](https://www.datafirefly.com/nl/documentation/dff-notification-center-shopware/index.md), [pt](https://www.datafirefly.com/pt/documentation/dff-notification-center-shopware/index.md)
- Index: <https://www.datafirefly.com/de/documentation/llms.txt>

## Ü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

1. Gehen Sie in der Administration zu **Erweiterungen → Meine Erweiterungen → Erweiterung hochladen** und wählen Sie das ZIP.
2. Installieren und anschließend **aktivieren** Sie das Plugin.
3. 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, `0` zum 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 auf `active` und auf `(product_id, product_version_id)`. Fremdschlüssel zu `customer_group` und `sales_channel` (`ON DELETE SET NULL`) sowie zu `product` (`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 Antwort `client`-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:install` und `cache:clear` erneut 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:install` und dann `cache:clear` erneut aus und erzwingen Sie ein Neuladen des Browsers (Strg+F5).
