Markus Michalski FAQ

Klaro Cookie Consent: Technische Details

Technische Details von Klaro Cookie Consent für OXID eShop 7: Modul-ID, Aufbau, Datenbanktabellen, Admin-Controller, ViewConfig-Methoden, Template-Blöcke und die erzeugte Klaro-Konfiguration.

English Version

Zurück zur Übersicht

Klaro Cookie Consent: Technische Details

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

Kennzahlen

Eigenschaft Wert
Composer-Paket mmd/oxid7-klaro-consent
Modul-ID mmd_klaroconsent
Installationspfad source/modules/mmd/klaro-consent
Namespace Mmd\KlaroConsent
Erweiterte Klasse OxidEsales\Eshop\Core\ViewConfig
Events onActivate legt Tabellen und Standard-Service an, onDeactivate tut nichts

Ablauf im Storefront

graph TD
    A["Seitenaufruf"] --> B{"isKlaroActive"}
    B -->|"nein"| C["Nichts ausgeben"]
    B -->|"ja"| D["Stylesheet und CSS-Variablen"]
    D --> E{"Google Consent Mode v2"}
    E -->|"an"| F["gtag Default-Snippet"]
    E -->|"aus"| G["window.klaroConfig"]
    F --> G
    G --> H["klaro.js mit defer"]

Admin

Controller-ID Klasse Aufgabe
mmd_klaro_service CookieServiceController Rahmen mit Liste und Bearbeitungsansicht
mmd_klaro_service_list CookieServiceList Liste der Services des aktuellen Shops, Löschen (nicht bei erforderlichen Services)
mmd_klaro_service_main CookieServiceMain Anlegen und Bearbeiten, Titel und Beschreibung je Sprache

In menu.xml hängt der Menüeintrag mmd_klaro_consent ("Cookie Consent") unter dem Hauptmenü mxcustnews (Kundeninformationen). Er verweist auf den Controller mmd_klaro_service mit der Liste mmd_klaro_service_list und definiert den Reiter mmd_klaro_service_main ("Service bearbeiten").

Datenbank

Beide Tabellen legt ModuleEvents::onActivate mit CREATE TABLE IF NOT EXISTS an.

mmd_klaro_cookie_service

Spalte Typ Bedeutung
OXID CHAR(32) Primärschlüssel
OXSHOPID INT Shop-ID
TECHNICAL_NAME VARCHAR(100) Klaro-Name, mit OXSHOPID eindeutig
PURPOSE VARCHAR(50) analytics, marketing, functional oder security
REQUIRED TINYINT(1) Nicht abwählbar
DEFAULT_ENABLED TINYINT(1) Vorausgewählt
ACTIVE TINYINT(1) Im Dialog sichtbar
COOKIES JSON Löschregeln [{pattern, path, domain}]
ONLY_ONCE TINYINT(1) Nur einmal ausführen
CONTEXTUAL_CONSENT_ONLY TINYINT(1) Nur über Platzhalter freigeben
POSITION INT Reihenfolge
OXTIMESTAMP TIMESTAMP Änderungszeit

mmd_klaro_cookie_service_translation

Spalte Typ Bedeutung
OXID CHAR(32) Service, Fremdschlüssel mit ON DELETE CASCADE
OXLANG INT Sprach-ID, 0 = Deutsch, 1 = Englisch
TITLE VARCHAR(255) Anzeigename
DESCRIPTION TEXT Beschreibung

Dienste im Container

Dienst Aufgabe
KlaroConfigBuilderInterface Baut die Klaro-Konfiguration aus Einstellungen und Services
ModuleSettingsServiceInterface Typisierter Zugriff auf die Modul-Einstellungen, prüft Wertebereiche
CookieServiceRepositoryInterface Liest und schreibt die Services
DefaultServicesInstaller Legt den Service session an

ViewConfig-Methoden

Das Modul erweitert ViewConfig. In Twig-Templates stehen über oViewConf zur Verfügung:

Methode Rückgabe
isKlaroActive() Ob "Cookie Consent aktivieren" an ist
getKlaroConfigJson() Konfiguration als JSON, mit JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_HEX_QUOT kodiert. Bei deaktiviertem Modul {}
isGoogleConsentModeEnabled() Ob die Consent-Mode-Option an ist
getKlaroPrimaryColor(), getKlaroSecondaryColor(), getKlaroDeclineColor() Die Farb-Einstellungen

Template-Blöcke

Die Datei views/twig/extensions/themes/apex/layout/base.html.twig erweitert layout/base.html.twig in den Blöcken base_style und base_js. Das Widget @mmd_klaroconsent/widget/klaro_settings_link.html.twig liegt unter views/twig/widget.

Erzeugte Klaro-Konfiguration

KlaroConfigBuilder::buildConfig() liefert diese Schlüssel:

Schlüssel Wert
version 1
elementID klaro
storageMethod, storageName, cookieExpiresAfterDays aus den Speicher-Einstellungen
privacyPolicy Datenschutz-URL
default immer false
mustConsent, acceptAll, hideDeclineAll, hideLearnMore, groupByPurpose aus den Verhaltens-Einstellungen
styling.theme Farbschema plus Position, bei bottom-left und bottom-right mit floating, sonst mit wide
htmlTexts true
services aktive Services des Shops, sortiert nach Reihenfolge und Name
translations zz (Fallback, deutsch), de, en

Je Service enthält der Eintrag name, purposes, required, default, onlyOnce, optional cookies und contextualConsentOnly.

Sprachdateien

Datei Inhalt
translations/{de,en}/mmd_klaroconsent_lang.php Storefront-Texte: Dialog, Zweck-Gruppen, Buttons, Footer-Link
views/admin_twig/{de,en}/mmd_klaroconsent_lang.php Admin-Texte: Menü, Formularfelder, Modul-Einstellungen