- PHP 51%
- JavaScript 25.8%
- Twig 22.2%
- SCSS 0.7%
- CSS 0.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| .idea | ||
| src | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .php-cs-fixer.dist.php | ||
| AGENTS.md | ||
| CICD-Actions.md | ||
| CLAUDE.md | ||
| composer.json | ||
| LICENSE | ||
| phpstan.neon | ||
| phpunit.xml | ||
| Projekt.md | ||
| README-Orestbida-Update.md | ||
| README.md | ||
| STATUS.md | ||
WSC Cookie Consent – Orest Bida Integration
Ein Shopware 6 Plugin für DSGVO-konforme Cookie-Verwaltung auf Basis der Orest Bida CookieConsent Library (v3).
Das Banner wird datengetrieben aus den im Admin gepflegten Kategorien und Cookies aufgebaut, ist vollständig mehrsprachig (de/en/fr) und CSP-konform (kein Inline-Script).
Features
Cookie-Verwaltung
- Kategorien & Cookies über ein eigenes Admin-Modul verwalten
- Service-Level-Consent: individuelle Zustimmung pro Cookie, nicht nur pro Kategorie
- Cookie-Items (Sub-Cookies) je Cookie mit Name, Laufzeit und Beschreibung
- Detail-Infos je Cookie: Anbieter, erhobene Daten, Verwendungszweck, Rechtsgrundlage (mit DSGVO-Artikel), Verarbeitungsort, Datenschutz-Link
- Import/Export der kompletten Konfiguration als JSON
Mehrsprachigkeit (de / en / fr)
- Banner-Texte kommen aus Shopware-Snippets der aktuellen Sprache – jeder Text ist im Admin unter Einstellungen → Snippets überschreibbar (Overrides überleben Plugin-Updates)
- Kategorie- und Cookie-Inhalte sind pro Sprache über die Shopware-Übersetzungsebene pflegbar (Sprachumschalter im Admin)
- Mitgelieferter Standard-Datensatz in de/en/fr
Darstellung
- Position (unten zentriert/links/rechts, oben, Mitte-Modal), Layout (Box/Cloud/Bar)
- Themes (Hell, Dunkel-Türkis, Hell-Funky, Elegant-Schwarz, Benutzerdefiniert)
- Eigene Farben, Border-Radius, Buttons gleicher Breite / Reihenfolge umkehren
- Schwebender Einstellungen-Button (Position + Icon konfigurierbar)
- Datenschutz-/Impressum-Links im Banner werden automatisch aus der Shopware-Konfiguration aufgelöst (pro Verkaufskanal/Sprache)
Tracking-Integration
- Google Consent Mode v2 mit korrektem Kategorie-Mapping
(analytics →
analytics_storage, marketing →ad_storage/ad_user_data/ad_personalization, comfort →functionality_storage/personalization_storage, socialmedia →personalization_storage, necessary →security_storage) - Korrekte Consent-Reihenfolge (Muster eines gekauften CMP):
- Der
gtag('consent','default', …)(allesdeniedaußersecurity_storage) steht im frühesten Head-Block (layout_head_meta_tags) und damit garantiert vorgtm.js/gtag.js– unabhängig davon, welches Plugin GTM lädt. - Früher, synchroner
consent updatefür wiederkehrende Besucher: der gespeichertecc_cookiewird bereits im<head>ausgelesen und dergtag('consent','update', …)sofort gefeuert – also vor allen E-Commerce-Events (z. B.view_item). Erstbesucher erhalten den Update nach der Banner-Auswahl (Callback). So entsteht die Reihenfolgedefault → update → GTM-Container → view_item. - Das Kategorie-Mapping liegt zentral in
window.wscApplyGoogleConsent()(eine Quelle) und dedupliziert sich selbst, sodass früher Replay und spätereronConsent-Callback keinen doppelten Consent-Befehl pushen.
- Der
- Google Tag Manager DataLayer-Events und Matomo Tag Manager-Events bei Consent-Änderungen (inkl. Service-Level-Events)
- Automatische Script-Blockierung anhand der je Cookie hinterlegten Script-URL
Technik
- CSP-konform: Banner-Logik als externe Datei
(
Resources/public/cookieconsent/wsc-cookie-consent.js), kein Inline-Script - Debug-Modus als Schalter (Admin-Card „Debug") – Diagnose-Ausgaben in der Browser-Konsole nur bei Bedarf; echte Fehler sind immer sichtbar
- Standard-Datensatz wird bei der Erstinstallation per Migration eingespielt (locale-basiert, nur auf leerem Datenbestand)
Standard-Kategorien
| Kategorie | Technischer Name | Pflicht |
|---|---|---|
| Technisch notwendig | necessary |
Ja |
| Komfort | comfort |
Nein |
| Analyse / Statistiken | analytics |
Nein |
| Anzeigen / Ads | marketing |
Nein |
| Social Media | socialmedia |
Nein |
Die technischen Namen sind fix und sollten nicht umbenannt werden – das Google-Consent-Mode-Mapping und der Standard-Datensatz hängen daran.
Installation
Plugin-Verzeichnis: custom/plugins/wsc_swplugin_cookieorestbida/
(festgelegt über extra.installer-name in der composer.json).
bin/console plugin:refresh
bin/console plugin:install --activate WSCPluginSWCookieOrestBida
bin/console assets:install
bin/console cache:clear
Konfiguration
Plugin-Einstellungen
Erweiterungen → Meine Erweiterungen → WSC Cookie Consent → Konfiguration
- Banner aktivieren/deaktivieren (deaktiviert automatisch den Shopware-Standard-Banner)
- Banner-Darstellung (Position, Layout, Theme, Farben, Border-Radius, Buttons)
- Einstellungen-Button (anzeigen, Position, Icon)
- Tag-Manager-Integration (Google Consent Mode v2, GTM, Matomo)
- Erweitert (automatische Script-Blockierung)
- Debug (Konsolen-Diagnose ein-/ausschalten)
Cookie-Verwaltung
Einstellungen → Cookie Consent
| Bereich | Beschreibung |
|---|---|
| Cookie-Kategorien | Kategorien anlegen/bearbeiten (inkl. Übersetzungen) |
| Cookies | Cookies mit allen Details + Cookie-Items verwalten |
| Import/Export | Konfiguration als JSON sichern/übertragen |
Datenbank-Tabellen
sw_cookie_consent_category(+_translation)sw_cookie_consent_cookie(+_translation)sw_cookie_consent_cookie_item(+_translation)
Deinstallation
Bei Deinstallation mit „Alle Daten löschen" werden alle Plugin-Tabellen,
die system_config-Einträge und die Migrations-Datensätze vollständig entfernt.
Ohne diese Option bleiben die Daten erhalten.
Anforderungen
- Shopware 6.7+
- PHP 8.4
Entwicklung / CI
- Code-Style: PSR-12 (
.php-cs-fixer.dist.php) - Statische Analyse: PHPStan Level 3 gegen das aufgelöste Shopware-Framework
- CI/CD: Forgejo Actions (
.forgejo/workflows/ci.yml) –cs-check+phpstanbei jedem Push;build-zipbeiv*-Tags (baut die Plugin-ZIP und hängt sie ans Release)
Bibliotheks-Updates der CookieConsent-Library: siehe
README-Orestbida-Update.md.
Lizenz
Copyright (C) 2026 Christian Säum – web-seo-consulting.eu
Dieses Projekt steht unter der GNU General Public License, Version 3 oder
(nach deiner Wahl) einer späteren Version (GPL-3.0-or-later). Der
vollständige Lizenztext steht in der Datei LICENSE.
Du darfst die Software nutzen, weitergeben und – auch kommerziell – verkaufen.
Gibst du eine veränderte Fassung weiter, muss deren Quellcode ebenfalls unter
der GPL-3.0-or-later verfügbar sein. Der Copyright-Hinweis und die Nennung
des ursprünglichen Autors dürfen nicht entfernt werden.