Hier stellen wir Ihnen ein Beispiel-Layer für die Einwilligung zur Datenverarbeitung zur Verfügung. Das Designbeispiel berücksichtigt das aktuelle EuGH-Urteil vom 01.10.2019.
Es umfasst die Anpassungen in der Shopkonfiguration shop.config, den HTML-Quellcode für den Layer, einen Link zum erneuten Öffnen des Layers und ein Beispiel für zusätzliche CSS-Styles.
Sie können Layer und Konfiguration im Mustershop v8s-demoshop.websale.biz "live in action" erleben.
Wegweiser: Einwilligung zur Datenverarbeitung (Cookies)
Anpassungen der Shopkonfiguration shop.config
###################################################################################
### Einwilligung zur Datenverarbeitung ###
###################################################################################
<AgreementCookies>
Allow = yes
<+Entry>
ID = cookiebasket
Type = OptIn
Preselection = unchecked
Name = Warenkorb für nächsten Besuch speichern
Descr =
ConsentGroupID = comfort
+WEBSALEService = CookieBasket
</+Entry>
<+Entry>
ID = welcomecookie
Type = OptIn
Preselection = unchecked
Name = Persönliche Begrüßung
Descr =
ConsentGroupID = comfort
+WEBSALEService = WelcomeCookie
</+Entry>
<+Entry>
ID = googleMaps
Type = OptIn
Preselection = unchecked
Name = Anfahrtsplanung mit Google Maps
Descr =
ConsentGroupID = comfort
</+Entry>
<+Entry>
ID = youtube
Type = OptIn
Preselection = unchecked
Name = Produktvideos über YouTube
Descr =
ConsentGroupID = comfort
</+Entry>
<+Entry>
ID = google
Type = OptIn
Preselection = unchecked
Name = Google Analytics
Descr =
ConsentGroupID = optimize
</+Entry>
<+Entry>
ID = econda
Type = OptIn
Preselection = unchecked
Name = Econda
Descr =
ConsentGroupID = optimize
</+Entry>
<+Entry>
ID = googleTagManager
Type = OptIn
Preselection = unchecked
Name = Google Tag Manager
Descr =
ConsentGroupID = marketing
</+Entry>
<+Entry>
ID = instagram
Type = OptIn
Preselection = unchecked
Name = Instagram
Descr =
ConsentGroupID = marketing
</+Entry>
<+Entry>
ID = pinterest
Type = OptIn
Preselection = unchecked
Name = Pinterest
Descr =
ConsentGroupID = marketing
</+Entry>
<+Entry>
ID = twitter
Type = OptIn
Preselection = unchecked
Name = Twitter
Descr =
ConsentGroupID = marketing
</+Entry>
<+ConsentGroupInfo>
ConsentGroupID = comfort
Name = Komfortfunktionen
Descr = Wir möchten die Bedienung dieses Shops für Sie möglichst komfortabel gestalten.
</+ConsentGroupInfo>
<+ConsentGroupInfo>
ConsentGroupID = optimize
Name = Shop-Optimierungen
Descr = Um den Shop zu optimieren möchten wir Dienste nutzen die Daten erheben und aggregieren und uns diese als statistische Übersicht zur Verfügung stellen.
</+ConsentGroupInfo>
<+ConsentGroupInfo>
ConsentGroupID = marketing
Name = Social Media / Marketing Funktionen
Descr = Zu Werbezwecken dürfen Nutzungsdaten erhoben und mit statistischen Methoden zu einem Nutzerprofil zusammengefasst werden. Dies wird Interessengruppen zugeordnet, an die webseitenübergreifend Werbung ausgespielt wird.
</+ConsentGroupInfo>
</AgreementCookies>
HTML-Quellcode auf Basis von Bootstrap ver. 4.1.3 und jQuery 3.4.1
<body>
...
<div id="agreementPrivacy" class="py-3 px-sm-3"{!AC-AgreementNotMadeOrNeedsUpdate} style="display: none;"{/!AC-AgreementNotMadeOrNeedsUpdate}>
<div class="container-fluid">
<div class="row">
<div class="col">
<p class="lead mb-1">Einwilligung zur Datenverarbeitung</p>
<p class="small">Wir möchten Dienste von Drittanbietern nutzen, um den Shop und unsere Dienste zu verbessern
und optimal zu gestalten (Komfortfunktionen, Shop-Optimierung). Weiter wollen wir unsere Produkte bewerben (Social Media/Marketing).<br>
Dafür können Sie hier Ihre Einwilligung erteilen und jederzeit widerrufen. Weitere Informationen dazu finden Sie in unserer
<a href="~WS-LoadTpl(tpl_datenschutz.htm,Datenschutz)~" class="text-body"><u>Datenschutzerklärung</u></a>.</p>
</div>
<div class="col-12 mt-2">
<div class="row">
<div class="col-12 col-sm-6">
<input type="checkbox" value="" onclick="ws_agreement_updatecheckboxes();" class="~AC-ConsentAll_CheckboxClass~" ~AC-ConsentAll_CheckboxIsChecked~>
<b>Alle Dienste erlauben</b>
</div>
<div class="col-12 col-sm-6">
<input type="button" onclick="ws_agreementcookies_set(); $('#agreementPrivacy').hide(); $('#agreementPrivacy').removeClass('isFixed');
$('#cookieDetails').addClass('d-none'); $('#cookieDetailToggler').removeClass('open');" value="Einstellungen speichern" class="btn btn-block btn-success">
</div>
</div>
<div class="cursorPointer clearfix mt-2">
<span id="cookieDetailToggler" onclick="$('#cookieDetails').toggleClass('d-none'); $('#agreementPrivacy').toggleClass('isFixed'); $(this).toggleClass('open');">
Details<i class="fa fa-angle-down ml-1" aria-hidden="true"></i>
</span>
</div>
</div>
</div>
<div id="cookieDetails" class="d-none">
~DC-DynamicLoop1_set($AC-ConsentGroupList$)~
{@DC-DynamicLoop1}
{AC-ConsentGroup($DC-DynamicLoop1_data$)}
<div class="mb-3">
<div class="mt-3 p-3 border border-secondary">
<div class="font-weight-bold mb-1">
<input type="checkbox" value="" onclick="ws_agreement_updatecheckboxes();" class="~AC-ConsentGroup_CheckboxClass~" ~AC-ConsentGroup_CheckboxIsChecked~>
<b>Alle ~AC-ConsentGroup_Name~ erlauben</b>
</div>
<div class="small">~AC-ConsentGroup_Descr~</div>
{AC-Entry}
<div class="row mt-2 ml-2">
{@AC-Entry($DC-DynamicLoop1_data$)}
<div class="col-6 mb-2">
<input type="checkbox" value="" onclick="ws_agreement_updatecheckboxes();" class="~AC-Entry_CheckboxClass~" ~AC-Entry_CheckboxIsChecked~>
~AC-Entry_Name~
</div>
{/@AC-Entry($DC-DynamicLoop1_data$)}
</div>
{/AC-Entry}
</div>
</div>
{/AC-ConsentGroup($DC-DynamicLoop1_data$)}
{/@DC-DynamicLoop1}
</div>
</div>
</div>
...
</body>
Hinweis: |
|
|
Sie können den Layer auch mit Bootstrap 3 verwenden. Beachten Sie, dass Sie bei Verwendung von Bootstrap 3 die CSS-Klassen des oben wiedergegebenen Beispielcodes anpassen müssen. |
Link zum erneuten Öffnen des Layers, z. B. auf der Datenschutzseite
<body>
...
<div class="btn btn-primary mb-5" onclick="$('#agreementPrivacy').show();">Einwilligung zur Datenverarbeitung ändern</div>
...
</body>
Individuelles CSS
/* Zusätzlich zu den Standard-CSS-Anweisungen von Bootstrap v4.1.3 */
#agreementPrivacy {
position: fixed;
background: #dde5ee;
z-index: 9999999;
right: 0;
bottom: 0;
left: 0;
box-shadow: 0 0 10px rgba(0,0,0,.1);
}
@media (min-width:576px) {
#agreementPrivacy {
right: auto;
width: 500px;
/*height: 313px;*/
}
}
#agreementPrivacy.isFixed {
height: 100%;
overflow-y: auto;
}
#cookieDetailToggler.open > i.fa {
transform: rotate(180deg);
}