shop.config, den HTML-Quellcode des Layers, einen Link zum erneuten Öffnen und das ergänzende CSS. Das Designbeispiel berücksichtigt das EuGH-Urteil vom 1. Oktober 2019, nach dem eine vorangekreuzte Checkbox keine wirksame Einwilligung ist.
Layer und Konfiguration können Sie im Mustershop v8s-demoshop.websale.biz ausprobieren.
Wegweiser: Einwilligung zur Datenverarbeitung (Cookies) · Referenz: shop.config, Abschnitt AgreementCookies
Die vier Bausteine
Der Layer besteht aus vier Teilen, die zusammengehören. Lassen Sie einen davon weg, funktioniert das Ganze nicht.Das Beispiel setzt Bootstrap 4.1.3 und jQuery 3.4.1 voraus. Außerdem braucht es das WEBSALE-Modul
ws-module-agreementcookies, das die beiden Funktionen ws_agreementcookies_set und ws_agreement_updatecheckboxes mitbringt. Dieses Modul setzt als einziges WS-Modul nur jQuery voraus, nicht die Basis-Komponente.Das Pfeil-Symbol am Aufklapper stammt aus Font Awesome. Verwenden Sie dort ein anderes Symbol, wenn Ihr Shop Font Awesome nicht einbindet.Baustein 1: Der Abschnitt AgreementCookies
Das Beispiel definiert zehn Dienste und fasst sie in drei Gruppen zusammen: Komfortfunktionen, Shop-Optimierungen und Social Media mit Marketing. Alle zehn stehen aufOptIn mit der Vorbelegung unchecked, keine Checkbox ist also vorangekreuzt.
+WEBSALEService, die übrigen acht nicht. Mit +WEBSALEService sagen Sie dem Shop, dass hinter dem Eintrag eine eingebaute WEBSALE-Funktion steckt. Der Shop schaltet diese Funktion dann selbst ab, wenn der Besucher nicht zustimmt. Die acht Einträge ohne diese Zeile sind reine Erklärungen gegenüber dem Besucher, das Abschalten der fremden Dienste müssen Sie im Template selbst erledigen.
Die Reihenfolge der Gruppen im Layer kommt aus der Reihenfolge der <+ConsentGroupInfo>-Blöcke, nicht aus der Reihenfolge der Dienste. Gruppen, für die kein <+ConsentGroupInfo> existiert, landen am Ende.
Baustein 2: Der HTML-Layer
Der Layer zeigt im eingeklappten Zustand nur die Erklärung, eine Checkbox für alles und die Speichern-Schaltfläche. Erst der Aufklapper “Details” blendet die Gruppen mit ihren einzelnen Diensten ein.HTML-Layer auf Basis von Bootstrap 4.1.3
HTML-Layer auf Basis von Bootstrap 4.1.3
Wie der Layer aufgebaut ist
Die äußere Hülle entscheidet, ob der Layer überhaupt sichtbar ist:display: none und der Layer wird sichtbar. Deshalb genügt für den Link weiter unten ein einfaches show().
Die Gruppenschleife läuft nicht über ein eigenes Schleifen-Tag, sondern über die dynamische Schleife:
~AC-ConsentGroupList~ liefert alle Gruppenkennungen als kommagetrennte Liste in der Reihenfolge aus der shop.config. DC-DynamicLoop1 zerlegt diese Liste, und AC-ConsentGroup schaltet je Durchlauf auf die passende Gruppe um. Innerhalb davon läuft {@AC-Entry(…)} über die Dienste genau dieser Gruppe.
Die drei Ebenen von Checkboxen sind gleich aufgebaut. Jede bekommt ihre Klassen aus einem _CheckboxClass-Tag und ihren Haken aus einem _CheckboxIsChecked-Tag, und jede ruft beim Klick ws_agreement_updatecheckboxes() auf. Diese Funktion hält die drei Ebenen synchron: Setzt der Besucher den Haken bei einer Gruppe, bekommen alle Dienste darin ebenfalls einen Haken.
Baustein 3: Link zum erneuten Öffnen
Der Besucher muss seine Einwilligung jederzeit widerrufen können. Setzen Sie dafür beispielsweise auf der Datenschutzseite einen Link, der den Layer wieder einblendet.Baustein 4: Individuelles CSS
Diese Anweisungen kommen zusätzlich zu den Standard-Klassen von Bootstrap. Sie heften den Layer an den unteren Bildschirmrand und beschränken ihn ab der Bootstrap-Breakpoint-Breite auf 500 Pixel.isFixed setzt der Aufklapper selbst. Sie sorgt dafür, dass der aufgeklappte Layer den ganzen Bildschirm nutzt und bei vielen Diensten scrollbar wird. #cookieDetailToggler.open > i.fa dreht den Pfeil am Aufklapper um.
Die Klasse
cursorPointer aus dem HTML-Beispiel ist in diesem CSS nicht enthalten. Ergänzen Sie sie selbst, sonst sieht der Besucher am Aufklapper keinen Mauszeiger:z-index: 9999999. Prüfen Sie, dass kein anderes Element Ihres Shops darüber liegt, besonders klebende Kopfzeilen und Warenkorb-Vorschauen.
Was das Beispiel nicht zeigt
Das Beispiel nutzt nur einen Teil der Möglichkeiten des Abschnitts. Die ausführliche Beschreibung steht auf der Referenzseite zurshop.config.
Weitere Werte für Allow und Type
Bei beiden Opt-Out-Varianten gilt die Zustimmung als erteilt, solange der Besucher nichts entscheidet. Bei
OptIn ist es umgekehrt.
Weitere WEBSALE-Dienste
NebenCookieBasket und WelcomeCookie aus dem Beispiel kennt der Shop vier weitere eingebaute Dienste, die er bei fehlender Zustimmung selbst abschaltet.
Ein Eintrag darf mehrere
+WEBSALEService-Zeilen tragen, wenn eine Checkbox mehrere eingebaute Dienste abdecken soll.
Weitere Einträge je Dienst
Zwei häufige Fehler in der Konfiguration
Die Vorbelegung ausPreselection greift nur, solange für den Dienst noch keine Entscheidung vorliegt. Sobald der Besucher einmal gespeichert hat, zählt seine Entscheidung, und eine spätere Änderung an Preselection ändert daran nichts.