Markus Michalski FAQ

Klaro Cookie Consent: Technische Details

Technische Details von Klaro Cookie Consent für Sylius 2 - Architektur, Plugin-Struktur, Tabellen, Admin-Twig-Hooks und Erweiterbarkeit.

English Version

Zurück zur Übersicht

Klaro Cookie Consent: Technische Details

Diese Dokumentation bezieht sich immer auf die aktuellste veröffentlichte Version.

Architektur

graph LR
    A["Admin CRUD: ConsentService"] --> C["KlaroConfigBuilder"]
    B["Admin CRUD: ChannelConfiguration"] --> C
    C --> D["window.klaroConfig (JSON)"]
    D --> E["klaro.js (vendored)"]
    C --> F["Google Consent Mode Bruecke"]
    F --> G["gtag consent update"]

Die gesamte Fachlogik liegt in KlaroConfigBuilder und den beiden Repositories, unabhängig von der Rendering-Ebene. Die Admin-CRUD-Oberflächen (ConsentService, ChannelConfiguration) sind reine Backoffice-Features; die Storefront-Banner greifen nur lesend auf das Ergebnis zu.

Plugin-Struktur

src/Entity          ConsentService(+Translation), ChannelConfiguration, Enums
src/Repository      Doctrine-Repositories hinter Interfaces
src/Factory         Übersetzbare Factory für im Admin erstellte ConsentService
src/Form/Type        Admin-Formulartypen
src/Klaro            KlaroConfigBuilder (window.klaroConfig), PrivacyPolicyLinkResolver, NoticeExemptPages
src/Twig             Storefront-Twig-Funktionen + Asset-URLs
src/Menu             Gemeinsame "MMKreativ Plugins"-Admin-Sidebar-Gruppe
src/Command          Setup-Command
src/Migrations       Drei Doctrine-Migrationen
templates/shop       Twig-Hook-Templates (Stylesheets, Scripts, Footer-Link)
templates/admin      Titel-Blöcke der Admin-Seiten
Resources/public     Vendorte klaro.js/klaro.css + KLARO-LICENSE.txt

Tabellen

graph TD
    A["mmd_sylius_klaro_consent_service"] --> B["mmd_sylius_klaro_consent_service_translation"]
    A --> C["mmd_sylius_klaro_consent_service_channel (Pivot)"]
    D["sylius_channel"] --> C
    D --> E["mmd_sylius_klaro_channel_configuration"]

Vier eigene Tabellen, angelegt über drei Migrationen: die Haupttabelle für Dienste, deren Übersetzungstabelle, die Many-to-Many-Zuordnung zu Channels, und eine Tabelle mit genau einer Konfigurationszeile pro Channel.

Admin Twig Hooks

Zusätzlich zu den drei Storefront-Hooks (siehe Storefront-Integration) hängt sich das Plugin mit vier Hooks in die eigenen Admin-Grid-Seiten ein, um Titel und Navigationsbuttons zwischen den beiden Grids zu setzen:

Hook Wirkung
sylius_admin.klaro_channel_configuration.index.content.header.title_block Titel der Channel-Konfigurationen-Seite
sylius_admin.klaro_consent_service.index.content.header.title_block Titel der Consent-Services-Seite
sylius_admin.klaro_channel_configuration.index.content.header.title_block.actions Button zu "Consent services"
sylius_admin.klaro_consent_service.index.content.header.title_block.actions Button zu "Klaro settings"

Erweiterbarkeit

Das Plugin bringt bewusst keine eigenen Events oder Service-Tags für Dritte mit. Was sich anpassen lässt:

Darüber hinaus gibt es keine plugin-eigenen Erweiterungspunkte: keine PSR-14-Events, keine eigenen Service-Tags.

Qualitätssicherung

Behat deckt in drei Suiten das Anlegen/Bearbeiten/Löschen von Diensten, das Konfigurieren eines Channels und das Storefront-Rendering (Banner, klaro.js, Footer-Link, Google-Consent-Mode-Skript) für aktivierte, deaktivierte und unkonfigurierte Channels ab, über Minks Symfony-Session ohne Chrome. PHPStan läuft auf Level max, der Codestil folgt dem sylius-labs/coding-standard.