Ich hatte das Vergnügen, kommende DSGVO sei Dank, einen alten modified Ecomerce Shop von http auf https (SSL) umzustellen. Hier hatte ich beschrieben wie man den Shop auf https umstellt, was z.B. für die Kontaktformulare laut DSGVO wichtig ist, aber in meinen Augen bereits für alle Seiten Standard sein sollte. Als nächstes zeige ich kurz wie die EU-Cookie Richtlinie erfüllt wird, indem man auf die Cookies des Shops hinweist. Das Modul und somit die eigentliche Arbeit gehen jedoch an „noRiddle“
Der Shop ist in folgender Version:
- 1.06 rev 4642 SP4 vom 01.04.2016
- Datenbank MOD_1.0.6.4
- Download es Moduls: modified eCommerce 1.06 4642 SP4 EU-Cookie Modul
Das nachfolgende Modul stammt von noRiddle und wurde von mir in einem alten modified eCommerce Shop verbaut.
899 Downloads
Nachfolgend die Anleitung die auch dem Archiv beiliegt.
- Datenbank anpassen, wobei der Wert „20“ nicht in der Spalte Sortierung vorhanden sein darf:
INSERT INTO configuration VALUES ('', 'EU_COOKIE_DIRECTIVE', 'true', 17, 20, NULL, NOW(), NULL, 'xtc_cfg_select_option(array(\'true\', \'false\'),');
- nun den Ordner CookieGuard aus dem Archiv in den Shop unter
/templates/DEIN_TEMPLATE/javascript
per FTP kopieren: - in die Datei /lang/german/admin/configuration.php folgenden Inhalt an das Ende vor ?> kopieren
// BOC EU cookie directive, noRiddle
define('EU_COOKIE_DIRECTIVE_TITLE', 'Eu-Cookie-Anzeige im Frontend aktivieren ?');
define('EU_COOKIE_DIRECTIVE_DESC', 'Wenn diese Funktion aktiviert wird erscheint bei Aufruf des Shops ein Container ganz oben auf der Shopseite.<br />Dort kann der Besucher verwendete Cookies einsehen und die für den Betrieb der Seite nicht essentiellen Cookies blockieren oder erlauben.<br />Nachdem der Besucher seine Entscheidung getroffen hat wird ein Cookie mit den Präferenzen gesetzt.<br />Die vom Besucher gewählte Einstellung kann nur durch Löschen oder Ablauf der entsprechenden Cookies im Browser rückgängig gemacht werden.');
// EOC EU cookie directive, noRiddle
- in die Datei /lang/german/german.php folgenden Inhalt an das Ende vor ?> kopieren
// BOC for cookieguard, noRiddle
define('COOKIES_PRIMARY_TXT', 'Diese Webseite benutzt Cookies (<a href="http://de.wikipedia.org/wiki/Cookie" target="_blank">was ist das ?</a>)<br/>');
define('COOKIES_SECONDARY_TXT', 'Sie können Cookies die nicht essentiell für den Betrieb dieser Seite sind blockieren.<br />Bereits gesetzte nicht essentielle Cookies werden dann gelöscht.');
define('COOKIES_ESSENTIAL_TXT', 'Essentielle Cookies <span>- Diese Cookies sind nötig um die Seite zu betreiben.</span>');
define('COOKIES_NONESSENTIAL_TXT', 'Nicht essentielle Cookies <span>- Der Seitenbetreiber hat diese Cookies genehmigt, Sie können sie jedoch deaktivieren.</span>');
define('COOKIES_COOKIEGUARD_TXT', ' - Dieses Cookie ist essentiell um den Status Ihrer Entscheidung über die Benutzung von nicht essentiellen Cookies zu speichern.');
define('COOKIES_UNKNOWN_TXT', 'Unbekannte Cookies <span>- Der Seitenbetreiber hat diese Cookies nicht kategorisiert.</span>');
define('COOKIES_NEWFOUND_TXT', 'Cookie Guard hat neue Cookies gefunden.<br/>');
define('COOKIES_NEWBLOCK_TXT', 'Sie können sich entscheiden diese Cookies zu blockieren.');
define('COOKIES_NOTALLOWED_TXT', 'Die aufgelisteten Cookies wurden nun für diese Seite erlaubt.');
define('COOKIES_NOWALLOWED_TXT', 'Nicht essentielle und unbekannte Cookies wurden nun blockiert für diese Seite.');
define('COOKIES_SHOW_TXT', 'Cookies zeigen');
define('COOKIES_HIDE_TXT', 'Cookies verstecken');
define('COOKIES_ALLOW_TXT', 'Cookies erlauben');
define('COOKIES_BLOCK_TXT', 'Cookies blockieren');
define('COOKIES_OKAY_TXT', 'Okay');
define('COOKIE_MODSID_TXT', 'Dieses Cookie ist nötig für die Funktion der Seite um wichtige Informationen an folgende Seiten weiterzugeben.');
define('COOKIE_PIWIK_TXT', 'Diese Cookies werden verwendet um Informationen zu sammeln darüber wie Besucher unsere Seite benutzen. Wir verwenden diese Informationen um Reports zu erstellen und um uns zu helfen die Seite zu verbessern. Die Cookies sammeln Informationen in anonymer Form. Das beinhaltet die Zahl der Besucher dieser Seite, woher Besucher zu dieser Seite kamen und welche Seite sie vorher besucht haben.');
// EOC for cookieguard, noRiddle
- in die Datei /lang/english/admin/configuration.php an das Ende vor ?> kopieren
// BOC EU cookie directive, noRiddle
define('EU_COOKIE_DIRECTIVE_TITLE', 'Activate Eu-Cookie indication in frontend ?');
define('EU_COOKIE_DIRECTIVE_DESC', 'If this function is activated a container will appear on top of the shop page.<br />In this container the visitor may view the used cookies and opt to block or allow the for the site operation non-essential cookies.<br />After the user has choosen his preferences a cookie will be generated to store these preferences.<br />The by the visitor choosen preferences can only be revised by deleting the correspondent cookies in the browser or when the cookies have expired.');
// EOC EU cookie directive, noRiddle
- in die Datei /lang/english/english.php an das Ende vor ?> kopieren
// BOC for cookieguard, noRiddle
define('COOKIES_PRIMARY_TXT', 'This website uses cookies (<a href="http://en.wikipedia.org/wiki/Magic_cookie" target="_blank">what is this ?</a>)<br/>');
define('COOKIES_SECONDARY_TXT', 'You may choose to block non-essential and unknown cookies.<br />Such cookies will be deleted if already set.');
define('COOKIES_ESSENTIAL_TXT', 'Essential Cookies <span>- These cookies are essential to the running of the present site.</span>');
define('COOKIES_NONESSENTIAL_TXT', 'Non-Essential Cookies <span>- The site owner has approved these cookies but you may turn them off.</span>');
define('COOKIES_COOKIEGUARD_TXT', ' - This cookie is essential for storing the status of your cookie choices whilst using this site.');
define('COOKIES_UNKNOWN_TXT', 'Unknown Cookies <span>- The site owner has not approved these cookies.</span>');
define('COOKIES_NEWFOUND_TXT', 'Cookie Guard has found new cookies.<br/>');
define('COOKIES_NEWBLOCK_TXT', 'You may choose to block these cookies.');
define('COOKIES_NOTALLOWED_TXT', 'The listed cookies have now been allowed on this site.');
define('COOKIES_NOWALLOWED_TXT', 'Non-essential and unknown cookies have now been blocked on this site.');
define('COOKIES_SHOW_TXT', 'Show');
define('COOKIES_HIDE_TXT', 'Hide');
define('COOKIES_ALLOW_TXT', 'Allow');
define('COOKIES_BLOCK_TXT', 'Block');
define('COOKIES_OKAY_TXT', 'Okay');
define('COOKIE_MODSID_TXT', 'This cookie is used to track important logical information for the smooth operation of the site.');
define('COOKIE_PIWIK_TXT', 'These cookies are used to collect information about how visitors use our site. We use the information to compile reports and to help us improve the site. The cookies collect information in an anonymous form, including the number of visitors to the site, where visitors have come to the site from and the pages they visited.');
// EOC for cookieguard, noRiddle
- Texte können entsprechend angepasst bzw. erweitert werden. Obiges bezieht sich auf das Cookie MODsid, welches in jedem Shop gesetzt wird. Auch ist ein Beispiel für PIWIK enthalten.
- in /templates/DEIN_TEMPLATE/css/general.css.php folgendes Suchen
<link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/css/jquery-ui.css" type="text/css" media="screen" />
und folgendes dahinter einfügen:
<?php
// BOC cookieGuard, noRiddle
if (EU_COOKIE_DIRECTIVE == 'true') {
?>
<link rel="stylesheet" href="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/CookieGuard/cookieStyles.css" type="text/css" media="screen" />
<?php
}
// EOC cookieGuard, noRiddle
?>
- in der Datei /templates/DEIN_TEMPLATE/javascript/general.js.php folgendes suchen:
<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/jquery.js" type="text/javascript"></script>
und dies einfügen:
<?php //BOC Cookie Guard noRiddle
if (EU_COOKIE_DIRECTIVE == 'true') {
?>
<script src="<?php echo 'templates/'.CURRENT_TEMPLATE; ?>/javascript/CookieGuard/cookie_guard_nR.min.js"></script>
<script>
/* <![CDATA[ */
var ce = (navigator.cookieEnabled) ? true : false;
if (typeof navigator.cookieEnabled == 'undefined' && !cookieEnabled) {
document.cookie = 'ce_cookie';
ce = (document.cookie.indexOf('ce_cookie') != -1) ? true : false;
}
if (ce) { // if cookies enabled
//BOC this is not needed here in case jQuery basis is loaded in head area and rest of javascript before closing body tag, noRiddle
$('body').append('<div id="show-cook-again">Cookies</div>');
$('#show-cook-again').click(function () {
if ($('#cookieGuardMsg').is(':visible')) {
$.cookieguard.hideMessage();
} else {
$.cookieguard.buildMessage(true, $.cookieguard.settings.cookiesUsed, '');
$.cookieguard.displayMessage(0, 0);
}
});
//EOC this is not needed here in case jQuery basis is loaded in head area and rest of javascript before closing body tag, noRiddle
$(function(){
$.cookieguard(
{
'messageShowDelay' : 1000, //set time in msec after which cookie container appears
'answeredHideDelay' : 2000, //set time in msec after which container disappears after user chose preferences
'slideSpeed' : 500, //self-explanatory
'showTop' : true, // true: show on top, false: show on bottom | ! css must be adapted !
//BOC language constants
'cookiesPrimaryTxt' : '<?php echo COOKIES_PRIMARY_TXT; ?>',
'cookiesSecondaryTxt' : '<?php echo COOKIES_SECONDARY_TXT; ?>',
'cookiesEssentialTxt' : '<?php echo COOKIES_ESSENTIAL_TXT; ?>',
'cookiesNonEssentialTxt' : '<?php echo COOKIES_NONESSENTIAL_TXT; ?>',
'cookiesCookieGuardTxt' : '<?php echo COOKIES_COOKIEGUARD_TXT; ?>',
'cookiesUnknownTxt' : '<?php echo COOKIES_UNKNOWN_TXT; ?>',
'cookiesNewFoundTxt' : '<?php echo COOKIES_NEWFOUND_TXT; ?>',
'cookiesNewBlockTxt' : '<?php echo COOKIES_NEWBLOCK_TXT; ?>',
'cookiesNotAllowedTxt' : '<?php echo COOKIES_NOTALLOWED_TXT; ?>',
'cookiesNowAllowedTxt' : '<?php echo COOKIES_NOWALLOWED_TXT; ?>',
'cookiesShowTxt' : '<?php echo COOKIES_SHOW_TXT; ?>',
'cookiesHideTxt' : '<?php echo COOKIES_HIDE_TXT; ?>',
'cookiesAllowTxt' : '<?php echo COOKIES_ALLOW_TXT; ?>',
'cookiesBlockTxt' : '<?php echo COOKIES_BLOCK_TXT; ?>',
'cookiesOkayTxt' : '<?php echo COOKIES_OKAY_TXT; ?>'
//EOC language constants
}
);
$.cookieguard.cookies.add('PHP Session', 'MODsid', '<?php echo COOKIE_MODSID_TXT; ?>', true); //true if essential cookie, false if not, noRiddle
$.cookieguard.cookies.add('PIWIK', '_pk_id.1.c9a7,_pk_ses.1.c9a7', '<?php echo COOKIE_PIWIK_TXT; ?>', false);
$.cookieguard.run();
});
} // END if cookies enabled
/*]]>*/
</script>
<?php
}
//EOC Cookie Guard noRiddle
?>
- Hinweis des Autors zu weiteren Cookies:
Jede Cookie-Art muß mittels
$.cookieguard.cookies.add()
aufgeführt werden (siehe Beispiele im Code oben).
Die auf der Shopseite verwendeten Cookies müssen im Browser nachgeschaut werden.
Cookies die zur selben Implementation gehören können komma-separiert eingetragen werden (siehe PIWIK-Beispiel oben).
Der Text der bei dem Cookie erscheint muß in den Sprachdateien (/lang/SPRACHE/SPRACHE.php) per Sprachkonstante nach Vorbild definiert werden.
Benutzt man beispielsweise GoogleAnalytics müssen die verwendeten Cookies wie im Beispiel PIWIK aufgeführt werden
(zweiter Parameter in $.cookieguard.cookies.add())
und es muß eine Sprachkonstante in den genannten Sprach-Dateien angelegt werden nach dem Muster define('COOKIE_GOOGLE_ANAL_TXT', 'DEIN_ERKLÄRUNGS_TEXT');
Bitte den Kommentar bezüglich Laden der Javascript-Files oben im Code beachten ("this is not needed here...").
Lädt man die jQuery-Basis im head-Bereich, alle anderen Files jedoch vor dem schließenden body-tag
- was ein schnelleres Laden der Seite zur Folge hat und als "good practise" gilt -
kann der kommentierte Code weggelassen werden.
Hinweis meiner seits. Ich musste bei der Reihenfolge in der general.css.php und der general.js.php etwas ändern und ausprobieren, ansonsten blieb die Shopseite leer.
Have Fun …
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.