Markus Michalski FAQ

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.

English Version

Zurück zur Übersicht

Klaro Cookie Consent: Storefront

Live Demo: Teste dieses und weitere Plugins live — ohne Installation, ohne Risiko: demo.markus-michalski.net

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.

Template-Erweiterung und Themes

Das Modul bringt die Erweiterung layout/base.html.twig für das Apex-Theme mit. Sie gibt im Storefront aus:

  1. das Klaro-Stylesheet,
  2. optional das Google-Consent-Mode-Snippet,
  3. die Konfiguration als window.klaroConfig,
  4. 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.

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.

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.