Zum Hauptinhalt springen
Mit dem $wsConsent-Modul lesen Sie die Einwilligung des Kunden zu Cookies und Services und steuern damit, welche Inhalte und externen Skripte geladen werden. Damit können Sie beispielsweise einen Tracking- oder Marketing-Service erst dann einbinden, wenn der Kunde ihm zugestimmt hat. Auf dieser Seite geht es um das Lesen des Einwilligungsstatus. Das Setzen der Einwilligung (Zustimmen, Ablehnen, Auswahl speichern) erfolgt über Aktionen und ist separat unter Aktionen → Consent dokumentiert. Die zugehörigen Cookies selbst behandelt das Modul $wsCookies.

Grundkonzept

Die Einwilligung ist zweistufig organisiert: Gruppen (z. B. „Statistik“, „Marketing“) bündeln einzelne Services (z. B. „Google Analytics“). Der Kunde kann entweder allen zustimmen („Alle erlauben”) oder eine Auswahl pro Gruppe/Service treffen. Jeder Eintrag trägt ein „allowed“-Flag, das die Entscheidung widerspiegelt. $wsConsent stellt diesen Status auf folgenden Wegen bereit:
  • GesamtstatusalreadySet (hat der Kunde überhaupt schon entschieden?) und allAllowed (hat er allem zugestimmt?). Damit steuern Sie, ob der Consent-Layer überhaupt angezeigt werden muss.
  • Strukturierte Listegroups mit ihren services, um einen Consent-Layer aufzubauen.
  • Gezielte PrüfungcheckAllowed(serviceName), um vor dem Laden eines bestimmten Skripts die Zustimmung zu prüfen. Das ist der empfohlene Weg zum Einbinden externer Skripte.

Einwilligung entscheidet, ob das Skript überhaupt geladen wird

Template-Code läuft beim Seitenaufbau. Wenn Sie ein Skript mit {{ if $wsConsent.checkAllowed(...) }} umschließen, wird das Skript bei fehlender Zustimmung gar nicht erst in die Seite geschrieben, nicht nur ausgeblendet. So stellen Sie sicher, dass ein abgelehnter Service auch wirklich nicht lädt.

Modulübersicht

Beispiel / Ausschnitt über $wsConsent
{{= $wsConsent | json }}
JSON-Ausgabe
{
  "alreadySet": false,
  "allAllowed": false,
  "groups": [
    {
      "name": "...",
      "label": "...",
      "description": "...",
      "allowed": false,
      "services": [
        { "name": "...", "label": "...", "description": "...", "allowed": false }
      ]
    }
  ],
  "services": [
    { "name": "...", "label": "...", "description": "...", "allowed": false }
  ],
  "checkAllowed": "ƒ()"
}
Anmerkung: "ƒ()" kennzeichnet eine Funktion. Variablen in der Übersicht
VariableTypBeschreibung
alreadySetboolOb der Kunde bereits eine Einwilligung gesetzt hat.
allAllowedboolOb der Kunde allen Cookies/Services zugestimmt hat.
groupsarrayKonfigurierte Gruppen, jeweils mit ihren services.
servicesarrayFlache Liste aller konfigurierten Services.
Eigenschaften eines Eintrags (gilt für groups[] wie für services[])
EigenschaftTypBeschreibung
namestringTechnischer Name (für checkAllowed()).
labelstringFür den Kunden sichtbare Bezeichnung.
descriptionstringBeschreibung.
allowedboolOb der Eintrag erlaubt (akzeptiert) ist.
servicesarrayNur bei groups[]: die zugeordneten Services.
Methoden in der Übersicht
MethodeRückgabe-TypBeschreibung
checkAllowed()boolPrüft, ob ein bestimmter Service akzeptiert wurde.

Templates

Der Consent-Layer kann global aufgerufen werden und wird aus dem Template consent.htm geladen.

Variablen

$wsConsent.alreadySet

Gibt aus, ob der Kunde bereits eine Cookie-/Service-Einwilligung gesetzt hat. Nutzen Sie es beispielsweise, um den Consent-Layer nur dann anzuzeigen, wenn noch keine Entscheidung vorliegt.
{{ if not $wsConsent.alreadySet }}
  <!-- Consent-Layer anzeigen -->
{{ /if }}

$wsConsent.allAllowed

Gibt aus, ob der Kunde allen Services zugestimmt hat (Schaltfläche „Alle erlauben”).
{{ if $wsConsent.allAllowed }}
  <!-- Allen Services wurde zugestimmt -->
{{ /if }}

$wsConsent.groups

Gibt die konfigurierten Gruppen aus. Jede Gruppe trägt die Eigenschaften eines Eintrags und enthält unter services die zugeordneten Services. Nutzen Sie die Gruppen, um einen strukturierten Consent-Layer aufzubauen.
{{ foreach $group in $wsConsent.groups }}
  {{= $group.label }}
  {{ foreach $service in $group.services }}
    - {{= $service.label }}
  {{ /foreach }}
{{ /foreach }}

$wsConsent.services

Gibt alle konfigurierten Services als Liste aus, unabhängig von der Gruppenzuordnung. Die Einträge tragen die Eigenschaften eines Eintrags.
{{ foreach $service in $wsConsent.services }}
  {{= $service.label }}: {{= $service.allowed }}
{{ /foreach }}

Methoden

$wsConsent.checkAllowed()

Prüft, ob ein bestimmter Service vom Kunden akzeptiert wurde. Dies ist der empfohlene Weg, um vor dem Laden eines externen Skripts die Zustimmung zu prüfen, da das Skript bei fehlender Zustimmung gar nicht erst gerendert wird. Signatur
$wsConsent.checkAllowed(serviceName)
Rückgabe
booltrue, wenn der Service akzeptiert wurde, sonst false.
NameTypPflichtBeschreibung
serviceNamestringjaTechnischer Name des Services (das name-Feld eines Eintrags).
{{ if $wsConsent.checkAllowed("googleAnalytics") }}
  <!-- Google-Analytics-Tracking-Code einbinden -->
{{ /if }}

Aktionen

Aktionen zu diesem Modul (Einwilligung setzen, ändern, speichern) sind separat dokumentiert: Aktionen → Consent.

Beispiele

Externes Skript einwilligungsabhängig laden

Bindet ein Skript nur ein, wenn der zugehörige Service akzeptiert wurde. Bei fehlender Zustimmung wird das Skript nicht in die Seite geschrieben.
{{ if $wsConsent.checkAllowed("googleAnalytics") }}
  <script src="https://www.googletagmanager.com/gtag/js?id=..."></script>
{{ /if }}
Ergebnis
Das Tracking-Skript erscheint nur im Quelltext, wenn der Kunde „Google Analytics” akzeptiert hat.
Durchläuft die Gruppen und je Gruppe ihre Services, was die typische Struktur eines Consent-Layers widerspiegelt.
{{ foreach $group in $wsConsent.groups }}
  <fieldset>
    <legend>{{= $group.label }}</legend>
    <p>{{= $group.description }}</p>
    {{ foreach $service in $group.services }}
      <label>
        <input type="checkbox" name="{{= $service.name }}"{{ if $service.allowed }} checked{{ /if }}>
        {{= $service.label }} – {{= $service.description }}
      </label>
    {{ /foreach }}
  </fieldset>
{{ /foreach }}
Ergebnis
Pro Gruppe ein Block mit den enthaltenen Services; bereits akzeptierte Services sind angehakt.

Inhalt nur bei Zustimmung anzeigen

Zeigt einen einwilligungspflichtigen Inhalt (z. B. ein eingebettetes Video) nur an, wenn der Service akzeptiert wurde, ansonsten einen Hinweis.
{{ if $wsConsent.checkAllowed("youtube") }}
  <!-- z. B. eingebettetes YouTube-Video -->
{{ else }}
  Um diese Inhalte zu sehen, akzeptieren Sie bitte den Service „Youtube Videos".
{{ /if }}
Ergebnis
Bei Zustimmung erscheint der Inhalt, sonst der Hinweis.

  • Aktionen → Consent – die Einwilligung setzen und speichern (dieses Modul liest sie nur).
  • $wsCookies – die durch die Einwilligung gesteuerten Cookies.