Пользователь Matomo/Piwik GDPR Согласен с Cookie-согласием Insites (или без!)
Чтобы соответствовать законодательству GDPR в Германии, я пытаюсь реализовать опцию согласия пользователя (подписка на файлы cookie и отслеживание) с использованием локальной установки аналитики Matomo (ранее Piwik) и Cookieconsent Insite на простом статическом веб-сайте без CMS.
Я прочитал соответствующие руководства, подобные приведенным ниже, но мне не хватает навыков javascript для реализации моего собственного решения:
https://developer.matomo.org/guides/tracking-javascript-guide
https://developer.matomo.org/api-reference/tracking-javascript
https://cookieconsent.insites.com/documentation/disabling-cookies/
Самым полным руководством, которое я нашел, было это (немецкий): https://wwagner.net/typo3/opt-in-loesung-typo3-matomo/
<script type="text/javascript">
var _paq = _paq || [];
_paq.push(['requireConsent']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);</script>
<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.6/cookieconsent.min.css" />
<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
<script>
window.addEventListener("load", function(){
window.cookieconsent.initialise({
"palette": {
"popup": {
"background": "#edeff5",
"text": "#838391"
},
"button": {
"background": "#4b81e8"
}
},
"theme": "edgeless",
"type": "opt-in",
"content": {
"message": "Diese Webseite verwendet Cookies und Matomo/Piwik, um die Bedienfreundlichkeit zu erhöhen.",
"dismiss": "Ablehnen",
"allow": "OK",
"link": "Weitere Informationen",
"href": "/datenschutz"
},
onInitialise: function (status) {
var type = this.options.type;
var didConsent = this.hasConsented();
if (type == 'opt-in' && didConsent) {
// enable cookies
console.log('onInitialise in - begin' );
console.log(type );
console.log(didConsent);
console.log('onInitialise in - end' );
_paq.push(['rememberConsentGiven']);
// Dieser Teil kommt aus dem Matomo/Piwik Code
(function() {
var u="//mysite.de/piwik/";
_paq.push(['setTrackerUrl', u+'js/']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'js/'; s.parentNode.insertBefore(g,s);
})();
}
if (type == 'opt-in' && !didConsent) {
// disable cookies
console.log('onInitialise out - begin' );
console.log(type );
console.log(didConsent);
console.log('onInitialise out - end' );
_paq.push(['forgetConsentGiven']);
}
},
onStatusChange: function(status, chosenBefore) {
var type = this.options.type;
var didConsent = this.hasConsented();
if (type == 'opt-in' && didConsent) {
// enable cookies
console.log('onStatusChange in - begin' );
console.log(type );
console.log(didConsent);
console.log('onStatusChange in - end' );
_paq.push(['rememberConsentGiven']);
// Dieser Teil kommt aus dem Matomo/Piwik Code
(function() {
var u="//mysite/piwik/";
_paq.push(['setTrackerUrl', u+'js/']);
_paq.push(['setSiteId', '1']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'js/'; s.parentNode.insertBefore(g,s);
})();
}
if (type == 'opt-in' && !didConsent) {
// disable cookies
console.log('onStatusChange out - begin' );
console.log(type );
console.log(didConsent);
console.log('onStatusChange out - end' );
_paq.push(['forgetConsentGiven']);
}
}
})
});</script>
Об этом сообщили пользователи блога. В моих тестах cookie-файлы устанавливаются и пользовательские действия отслеживаются независимо от выбора пользователя (но только если выбор сделан). При принятии или отклонении устанавливаются следующие 4 файла cookie: cookieconsent_status (содержимое: отклонить или разрешить), _pk_id, _pk_ses, mtm_consent. Я пытаюсь точно определить источник ошибки, любое решение (возможно, без cookieconsent) будет принята с благодарностью.