Klaro Cookie Consent: Storefront
Klaro Cookie Consent im Storefront von OXID eShop 7: Banner und Dialog, Footer-Link einbinden, Scripts und Embeds blockieren, Google Consent Mode v2 und Theme-Unterstützung.
Klaro Cookie Consent: Storefront
Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net
Banner und Dialog
Ist "Cookie Consent aktivieren" eingeschaltet, lädt das Storefront die Klaro-Bibliothek und übergibt ihr die Konfiguration aus den Modul-Einstellungen und den Cookie-Services deines Shops.
- Alle Services sind standardmäßig abgelehnt. Nur Services mit "Standardmäßig aktiv" oder "Erforderlich" sind vorausgewählt.
- Ist "Consent erforderlich" an, erscheint ein zentrierter Dialog, den Besucher beantworten müssen. Ist die Einstellung aus, erscheint ein Banner an der gewählten Position.
- Die Texte des Dialogs und die Namen der Zweck-Gruppen stehen in Deutsch und Englisch zur Verfügung. Andere Sprachen erhalten die deutschen Texte als Fallback.
- Titel und Beschreibung der Services kommen aus deinen Einträgen im Admin.
Template-Erweiterung und Themes
Das Modul bringt die Erweiterung layout/base.html.twig für das Apex-Theme mit. Sie gibt im Storefront aus:
- das Klaro-Stylesheet,
- optional das Google-Consent-Mode-Snippet,
- die Konfiguration als
window.klaroConfig, - das Klaro-Skript mit
defer.
Alles erscheint nur, wenn "Cookie Consent aktivieren" eingeschaltet ist.
Für andere Themes liefert das Modul keine Template-Erweiterung mit. Dort erscheint kein Banner, bis du eine eigene Erweiterung des Basis-Layouts anlegst, die dieselben Elemente ausgibt.
Footer-Link "Cookie-Einstellungen"
Der Link wird nicht automatisch in den Footer eingefügt. Du bindest das mitgelieferte Widget dort ein, wo er erscheinen soll, zum Beispiel im Service-Menü des Footers:
{% include "@mmd_klaroconsent/widget/klaro_settings_link.html.twig" %}
Optional gibst du eine CSS-Klasse und ein Icon mit:
{% include "@mmd_klaroconsent/widget/klaro_settings_link.html.twig" with {
linkClass: 'my-custom-class',
showIcon: true
} %}
| Parameter | Standard | Beschreibung |
|---|---|---|
linkClass |
footer-link |
CSS-Klasse des Links, mmd-klaro-settings-link kommt immer dazu |
showIcon |
false |
Zeigt vor dem Text das Icon fa fa-cookie-bite |
Der Link heißt "Cookie-Einstellungen" (Englisch "Cookie Settings") und öffnet den Dialog erneut. Besucher können ihre Entscheidung so jederzeit ändern. Ist das Modul deaktiviert, gibt das Widget nichts aus.
Scripts blockieren
Das Modul verändert keine Skripte in deinen Templates. Damit ein Dienst erst nach Einwilligung läuft, markierst du sein Skript oder Embed nach dem Klaro-Verfahren. data-name muss dem Technischen Namen des Services entsprechen.
Skript mit src:
<script type="text/plain"
data-type="text/javascript"
data-name="google-analytics"
data-src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX"></script>
Inline-Skript:
<script type="text/plain" data-type="text/javascript" data-name="google-analytics">
// dein Code
</script>
Embed (iframe):
<iframe data-name="youtube" data-src="https://www.youtube-nocookie.com/embed/VIDEO_ID"></iframe>
Mit der Option "Nur kontextueller Consent" am Service nimmt "Alle akzeptieren" diesen Service nicht mit. Er wird dann über den Platzhalter am Embed freigegeben.
Google Consent Mode v2
Ist "Google Consent Mode v2 aktivieren" an, schreibt das Template vor der Klaro-Konfiguration dieses Snippet in die Seite:
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('consent', 'default', {
'ad_storage': 'denied',
'ad_user_data': 'denied',
'ad_personalization': 'denied',
'analytics_storage': 'denied',
'functionality_storage': 'denied',
'personalization_storage': 'denied',
'security_storage': 'granted'
});
Das Modul setzt nur diese Standardwerte. Es sendet nach der Einwilligung keinen
gtag('consent', 'update', ...)-Aufruf und ordnet Klaro-Services nicht den Google-Consent-Typen zu. Die Aktualisierung der Werte musst du selbst auslösen, zum Beispiel über dein Google-Tag-Setup. Die Hilfetexte im Admin ("Synchronisiert Consent automatisch") beschreiben mehr, als das Modul tut.
Das Snippet lädt kein Google-Skript. Die Google-Skripte selbst bindest du, wie oben beschrieben, mit eigenem Service ein.