Zum Hauptinhalt springen
Datenschutzrelevante Dienste wie Tracking-Codes, Zählpixel oder eingebundene Karten dürfen erst laufen, wenn der Shopbesucher ihnen zugestimmt hat. Die Tags mit dem Präfix AC- bilden diese Einwilligung im Template ab: Sie bauen damit das Einwilligungsbanner, und Sie klammern damit die Dienste selbst ein, sodass ein Dienst ohne Zustimmung gar nicht erst in die Seite gelangt.

Das Modell dahinter

Drei Ebenen greifen ineinander, und die Tags folgen genau dieser Gliederung:
  • Der einzelne Dienst. Jeder datenschutzrelevante Dienst wird in der shop.config im Abschnitt <AgreementCookies> als eigener Eintrag angelegt und bekommt eine ID. Die Tags dazu beginnen mit AC-Entry.
  • Die Gruppierung. Dienste können zu Gruppen zusammengefasst werden, beispielsweise “Statistik” oder “Komfort”, sodass der Besucher nicht über jeden einzelnen Dienst entscheiden muss. Die Tags dazu beginnen mit AC-ConsentGroup.
  • Alles auf einmal. Für den Schalter “Alles akzeptieren” gibt es die Tags mit AC-ConsentAll.
Dazu kommen einige Tags, die den Zustand der Einwilligung als Ganzes abfragen, beispielsweise ob der Besucher überhaupt schon entschieden hat. Wegweiser: Einwilligung zur Datenverarbeitung · Referenz: Abschnitt AgreementCookies

Voraussetzung: die Funktion einschalten

Alle AC-Tags hängen am Parameter Allow im Abschnitt <AgreementCookies> der shop.config.
Bei Allow = no geht der Shop von einer Einwilligung aus: Alle Klammerungen auf den Templates sind aktiv, alle Dienste werden ausgeführt und alle Cookies gesetzt. Dasselbe gilt, wenn der Abschnitt <AgreementCookies> in der shop.config gar nicht vorhanden ist. Eine fehlende Konfiguration schaltet die Dienste also nicht ab, sondern frei.
Mit Allow = test prüfen Sie ein neues Einwilligungsbanner, ohne dass es für Besucher sichtbar wird. Außerhalb des Testmodus verhält sich der Shop dabei wie bei no.

Ein vollständiges Einwilligungsbanner

Die Einzeltags sind weiter unten beschrieben, im Template treten sie aber immer gemeinsam auf. Das folgende Beispiel zeigt ein Banner mit Gruppierungen, das nur erscheint, solange eine Entscheidung aussteht.
Der Umweg über DC-DynamicLoop1 ist nötig, weil AC-ConsentGroupList nur eine kommaseparierte Liste der Gruppen-IDs liefert und kein Schleifen-Tag ist. Die dynamische Schleife zerlegt diese Liste, und AC-ConsentGroup() nimmt je Durchlauf eine ID entgegen. Einen Dienst selbst klammern Sie dann an der Stelle ein, an der er eingebunden wird:
Diese Klammerung ist der eigentliche Zweck der ganzen Funktion. Ein Banner, das die Auswahl speichert, aber die Dienste ungeklammert lässt, lädt den Dienst trotzdem.

OptIn und OptOut: wann ein Haken Zustimmung bedeutet

Jeder Dienst bekommt in der shop.config einen Typ. Der Typ entscheidet, wie ein gesetzter Haken zu lesen ist, und das ist bei einem der drei Typen genau andersherum als erwartet. Bei OptOutChecked ist die Checkbox also angehakt, solange der Besucher nicht zugestimmt hat, und der Haken verschwindet, sobald er zustimmt.
Beschriften Sie die Checkbox deshalb passend zum Typ. Steht bei einem OptOutChecked-Dienst “Ich stimme zu” neben einem vorab gesetzten Haken, bedeutet die Oberfläche das Gegenteil dessen, was der Shop speichert.
Ist für einen Dienst eine Vorbelegung der Checkbox konfiguriert und liegt für ihn noch kein Cookie vor, gewinnt die Vorbelegung. AC-Entry_CheckboxIsChecked zeigt dann den vorbelegten Zustand, unabhängig davon, ob eine Einwilligung vorliegt. Sobald der Besucher einmal entschieden hat, zählt nur noch seine Entscheidung.

Zustand der Einwilligung

Diese Tags beziehen sich auf die Einwilligung als Ganzes und sind in allen Templates zulässig.

AC-AgreementMade

Der Bereich wird angezeigt, wenn der Shopbesucher eine Entscheidung zum Umgang mit seinen Daten getroffen hat, also den entsprechenden Button gedrückt bekommen und das Banner gesehen hat.

AC-AgreementMade_CookieName

Gibt den Namen des Cookies aus, in dem festgehalten ist, dass der Besucher eine Willenserklärung abgegeben hat.
Gebraucht wird das Tag vor allem für die Cookie-Übersicht in der Datenschutzerklärung. Dort steht der Name dann auch dann richtig, wenn er in der Konfiguration später geändert wird.

AC-AgreementMadeForID()

Der Bereich wird angezeigt, wenn der Besucher der Datenverarbeitung durch den Dienst mit der übergebenen ID zugestimmt hat. Die ID stammt aus der Konfiguration des jeweiligen Dienstes.
Mit diesem Tag klammern Sie Tracking-Codes, Zählpixel, JavaScripts und Container ein. Der Dienst wird dann nur im positiven Bereich ausgeführt. Den negativen Bereich nutzen Sie für den Ersatzinhalt, beispielsweise einen Platzhalter anstelle einer eingebundenen Karte mit einem Hinweis, wie sich die Einwilligung nachholen lässt.

AC-AgreementNeedsUpdate

Der Bereich wird angezeigt, wenn die Konfiguration der datenschutzrelevanten Dienste so geändert wurde, dass eine aktualisierte Einwilligung nötig ist.

AC-AgreementNotMadeOrNeedsUpdate

Der Bereich wird angezeigt, wenn noch nicht für alle Dienste eine Einwilligung vorliegt oder wenn eine Aktualisierung nötig ist. Das ist die übliche Klammerung um das gesamte Banner.
Dieses Tag fasst zwei Fälle zusammen, die Sie sonst einzeln abfragen müssten: die Erstentscheidung und die nachträgliche Änderung der Dienste. Für das Banner ist genau das die richtige Bedingung, denn in beiden Fällen muss der Besucher gefragt werden.

Die einzelnen Dienste

AC-Entry ist zugleich Einzel-Tag, Bereichs-Tag und Schleifen-Tag. Als Einzel-Tag gibt es die Anzahl der konfigurierten Dienste aus, als Bereichs-Tag greift es, wenn mindestens ein Dienst konfiguriert ist, und als Schleife läuft es über alle Dienste. Alle übrigen AC-Entry_Tags beziehen sich auf den Dienst des aktuellen Schleifendurchlaufs. Zulässig sind sie in allen Templates. Die AC-Entry_Tags setzen allerdings voraus, dass gerade ein Dienst aktiv ist, sie gehören also in die Schleife {@AC-Entry}.

AC-Entry()

Optional nimmt das Tag eine Gruppen-ID als Argument entgegen. Dann zählt und durchläuft es nur die Dienste dieser Gruppierung.
Mit Gruppen-ID:
Das Argument gehört an das Tag selbst. ~AC-Entry~ gibt auch innerhalb einer AC-ConsentGroup()-Klammerung die Anzahl aller Dienste aus, nicht die der Gruppierung. Nur ~AC-Entry(123)~ zählt die Dienste dieser einen Gruppierung.
Ist die angegebene Gruppen-ID unbekannt, gibt das Einzel-Tag 0 aus, die Schleife läuft keinen Durchlauf und der Bereich bleibt ausgeblendet. Ein Tippfehler in der ID fällt im Template also nicht als Fehler auf, sondern nur durch eine leere Liste.

AC-Entry_AgreementMade

Der Bereich wird angezeigt, wenn der Besucher der Nutzung dieses Dienstes zugestimmt hat.

AC-Entry_CheckboxClass

Gibt die funktionalen Klassennamen aus, die der Checkbox des Dienstes zugewiesen sein müssen.
Ohne diese Klasse findet das mitgelieferte JavaScript die Checkbox nicht. Der Haken lässt sich dann zwar setzen, wird aber weder gespeichert noch von den übergeordneten Schaltern mitgeführt. Eigene Gestaltungsklassen schreiben Sie zusätzlich dazu, nicht anstelle.

AC-Entry_CheckboxIsChecked

Gibt checked aus, wenn die Checkbox angehakt sein soll. Das Tag steht direkt im input-Element, ohne Attributnamen.
Ob ein Haken Zustimmung oder Widerspruch bedeutet, hängt vom Typ des Dienstes ab. Siehe den Abschnitt zu OptIn und OptOut weiter oben.

AC-Entry_ConsentGroupID

Gibt die ID der Gruppierung aus, der der Dienst zugeordnet ist. Als Bereichs-Tag prüfen Sie damit, ob der Dienst überhaupt einer Gruppierung angehört.

AC-Entry_CookieName

Gibt den Namen des Cookies aus, in dem die Einwilligung oder der Widerspruch zu diesem Dienst gespeichert wird.
Damit bauen Sie die Cookie-Tabelle der Datenschutzerklärung aus der Konfiguration auf, statt sie von Hand zu pflegen. Kommt ein Dienst dazu, steht er automatisch mit in der Tabelle.

AC-Entry_Descr

Gibt die Beschreibung des Dienstes aus. Als Bereichs-Tag greift es nur, wenn eine Beschreibung hinterlegt ist.

AC-Entry_ID

Gibt die ID des Dienstes aus. Es ist dieselbe ID, die Sie an AC-AgreementMadeForID() übergeben.

AC-Entry_Name

Gibt den Namen des Dienstes aus.

AC-Entry_TrackingFrameworkList

Gibt die Liste der Tracking-Frameworks aus, über die die Einwilligung zu diesem Dienst in der WEBSALE-App entgegengenommen werden kann.
Für einen reinen Webshop ist dieses Tag ohne Bedeutung. Es wird nur gebraucht, wenn zusätzlich eine App im Einsatz ist.

AC-Entry_Type

Gibt den Typ des Dienstes als Zahl aus: 0 für OptIn, 1 für OptOutChecked, 2 für OptOutUnchecked.
Für die Darstellung im Banner sind AC-Entry_TypeIsOptIn und AC-Entry_TypeIsOptOut die bessere Wahl. Die Zahl brauchen Sie vor allem zur Fehlersuche.

AC-Entry_TypeIsOptIn

Der Bereich wird angezeigt, wenn der Dienst als OptIn konfiguriert ist.

AC-Entry_TypeIsOptOut

Der Bereich wird angezeigt, wenn der Dienst als OptOut konfiguriert ist, also als OptOutChecked oder als OptOutUnchecked.
Das Tag unterscheidet die beiden OptOut-Varianten nicht. Für eine Beschriftung, die vom Anfangszustand der Checkbox abhängt, werten Sie zusätzlich AC-Entry_Type aus.

Die Gruppierungen

Zulässig sind sie in allen Templates. Bis auf AC-ConsentGroupList setzen sie voraus, dass gerade eine Gruppierung geklammert ist.

AC-ConsentGroupList

Gibt alle Gruppen-IDs als kommaseparierte Liste aus, in der Reihenfolge der Konfiguration.
Das Tag ist selbst keine Schleife. Sie brauchen deshalb immer eine dynamische Schleife, die die Liste zerlegt und jede ID einzeln an AC-ConsentGroup() weiterreicht.

AC-ConsentGroup()

Klammert die Gruppierung, deren ID als Argument übergeben wird. Innerhalb dieser Klammerung stehen alle übrigen AC-ConsentGroup_Tags zur Verfügung.
Zwei AC-ConsentGroup()-Klammerungen dürfen sich nicht überlappen oder ineinander verschachteln. Der Shop wertet immer nur eine Gruppierung gleichzeitig aus und meldet eine solche Verschränkung als Fehler, statt sie stillschweigend falsch darzustellen.
Ein negativer Bereich ist für dieses Tag nicht vorgesehen. Wenn Sie prüfen wollen, ob es überhaupt Gruppierungen gibt, werten Sie AC-ConsentGroupList aus.

AC-ConsentGroup_CheckboxClass

Gibt die funktionalen Klassennamen für die Checkbox der Gruppierung aus.
Der Aufruf von ws_agreement_updatecheckboxes() gehört dazu. Er führt die Haken der einzelnen Dienste und den Schalter “Alles akzeptieren” nach, wenn der Besucher die Gruppierung als Ganzes umschaltet.

AC-ConsentGroup_CheckboxIsChecked

Gibt checked aus, wenn die Checkbox der Gruppierung angehakt sein soll, also wenn für alle Dienste der Gruppierung eine Zustimmung vorliegt oder als vorbelegt gilt.
Dieses Tag berücksichtigt auch die Vorbelegung der einzelnen Checkboxen, AC-ConsentGroup_FullAgreementMade dagegen nicht. Solange der Besucher noch nicht entschieden hat, kann die Gruppen-Checkbox also angehakt sein, obwohl noch keine Einwilligung vorliegt.

AC-ConsentGroup_Descr

Gibt die Beschreibung der Gruppierung aus.

AC-ConsentGroup_FullAgreementMade

Der Bereich wird angezeigt, wenn der Besucher der Nutzung aller Dienste dieser Gruppierung zugestimmt hat.

AC-ConsentGroup_ID

Gibt die ID der Gruppierung aus.

AC-ConsentGroup_Name

Gibt den Namen der Gruppierung aus.

Alle Dienste zusammen

Diese drei Tags gehören zum Schalter “Alles akzeptieren”. Sie brauchen keine Klammerung und sind in allen Templates zulässig.

AC-ConsentAll_CheckboxClass

Gibt die funktionalen Klassennamen für die Checkbox aus, die alle Gruppierungen und damit alle Dienste umschaltet.

AC-ConsentAll_CheckboxIsChecked

Gibt checked aus, wenn die Checkbox angehakt sein soll, also wenn für alle Dienste eine Zustimmung vorliegt oder als vorbelegt gilt.

AC-ConsentAll_FullAgreementMade

Der Bereich wird angezeigt, wenn der Besucher der Nutzung aller Gruppierungen und damit aller Dienste zugestimmt hat.
Damit blenden Sie beispielsweise einen Link “Datenschutzeinstellungen ändern” nur denen ein, die nicht ohnehin allem zugestimmt haben.

Verwandte Themen