创意之子/cookieconsent

废弃:请参阅readme - Cookieconsent overlay with required optin and ways to block cookies and external resources

安装: 806

依赖项: 0

建议者: 0

安全: 0

星星: 1

关注者: 3

分支: 2

开放问题: 0

类型:contao-bundle

3.6.0 2024-07-30 10:53 UTC

README

废弃:该项目不再维护,可能不再符合GDPR规定。我们建议使用Consentmanager作为功能更丰富且符合GDPR规定的替代方案。

Cookie optin with brainsum/cookieconsent作为overlay以及阻止cookie和外部资源的方式。

注意:版本3有重大破坏性更改,与旧版本不兼容。但是,如果您在v2中找到错误或问题,请在我们这里提交问题,我们会考虑更新v2。

安装

通过contao-manager安装或使用composer require kreativsoehne/cookieconsent

运行数据库更新。

使用

一些基本设置将通过根页面提供。此外,它还添加了一个新的后端模块,允许您根据需要编辑类别和服务/cookie。

Cookieconsent自定义

有关特定设置的更多信息,请参阅cookieconsent 文档

默认类别与服务

您可以从此处下载数据库转储,其中包含一系列类别和cookie/services,我们认为它们足够常见且符合GDPR规定(到目前为止)。大部分为英文和德文翻译,但我们将随着新语言的到来更新它们(如果您想帮忙,请提交问题提交拉取请求,我们将更新数据库转储并添加您的翻译)。还有针对根页配置的单独转储,每种语言一个:英文德文,其中包含cookieconsent层本身的基本文本。

您可以通过phpmyadmin等工具导入这些内容。注意:自行决定使用。在没有测试的情况下不要将任何内容导入到实时系统中!

语言

通过模板文件cookieconsent_language,可以自定义前端语言设置或根据需要添加更多设置。格式是一个基本的JavaScript对象。

打开设置层

如果您需要一个链接/按钮来打开cookie设置(第二层),您可以使用内容元素"Cookieconsent切换"。

也可以手动渲染其模板

    <?= $this->insert('ce_cookieconsent_toggle', [
        'iconClass' => 'fa fa-cookie-bite',
        'label' => 'Cookie Settings',
    ]) ?>

选项有

类别

在Backend模块Category中,您可以编辑第二层中的类别列表。默认情况下,您应该至少有这三个类别,具体取决于您使用的服务

  • 必需的cookie(别名:necessary,即PHPSESSID、Contao Token)
  • 分析(别名:analytics,即Google Analytics/Tag Manager)
  • 外部(别名:external,即YouTube/Vimeo)

它们的别名用于后续启用或禁用特定功能。

服务

在后端模块 Services/Cookies 中,您可以编辑每个类别中服务的列表或单个cookie。

类型

每个服务可能有一个特定的类型。根据类型,如果用户的上级类别不允许,cookieconsent工具将尝试阻止服务(或其cookie)。

注意:通过任何这些自动阻止可能并不总是有效,因为这很大程度上取决于服务或cookie以及它们的设置方式。因此,以下提供几种强制手动阻止服务和或cookie的方法。

阻止分析

这适用于Contao 4.9及以上版本。如果您想阻止分析等,请扩展模板 analytics_google.html5 并替换此行

+ $ccChoices = json_decode(html_entity_decode(\Input::cookie('cconsent')));
+ $allowedAnalyticsCookies = $ccChoices !== null && is_object($ccChoices->categories) && is_object($ccChoices->categories->analytics) && $ccChoices->categories->analytics->wanted === true;
+
- if ($GoogleAnalyticsId != 'UA-XXXXX-X' && !BE_USER_LOGGED_IN && !$this->hasAuthenticatedBackendUser()): ?>
+ if ($GoogleAnalyticsId != 'UA-XXXXX-X' && !BE_USER_LOGGED_IN && !$this->hasAuthenticatedBackendUser() && $allowedAnalyticsCookies == true): ?>

这样,只有在用户事先接受分析类别后,才会渲染分析或其他代码。

对于Contao 4.4

遗憾的是,与4.9及更高版本相比,Contao 4.4有一个不同的缓存方案,因此在4.4(以及可能低于4.9的任何其他版本)中,上述if条件将不起作用。相反,必须在JavaScript代码中检查条件,因此模板 analytics_google.html5 需要如下所示

<?php

/**
 * To use this script, please fill in your Google Analytics ID below
 */
$GoogleAnalyticsId = 'UA-XXXXX-X';


/**
 * DO NOT EDIT ANYTHING BELOW THIS LINE UNLESS YOU KNOW WHAT YOU ARE DOING!
 */
if ($GoogleAnalyticsId != 'UA-XXXXX-X' && !BE_USER_LOGGED_IN && !$this->hasAuthenticatedBackendUser()): ?>

<script>
var ccChoices = document.cookie.match(new RegExp('(^| )cconsent=([^;]+)'));
if (ccChoices !== null) {
    try {
        ccChoices = JSON.parse(ccChoices[2]);
    } catch (e) {
        ccChoices = null;
    }
}
if (ccChoices !== null && typeof ccChoices === 'object' && typeof ccChoices.categories.analytics === 'object' && ccChoices.categories.analytics.wanted === true) {

  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','https://#/analytics.js','ga');
  ga('create', '<?= $GoogleAnalyticsId ?>', 'auto');
  <?php if (Config::get('privacyAnonymizeGA')): ?>
    ga('set', 'anonymizeIp', true);
  <?php endif; ?>
  ga('send', 'pageview');

}
</script>

<?php endif; ?>

阻止YouTube & Vimeo

如果用户未接受测量用途的cookie,将自动阻止YouTube和Vimeo的内容元素。您可以通过模板 cookieconsent_blocknotice.html5 编辑阻止消息,并通过 TL_LANG 变量编辑其文本。

阻止其他内容

如果您需要阻止其他内容,则这些if条件可能会有所帮助。在这些示例中,我们检查用户是否接受了 Analytics 服务/cookie。

在PHP中

<?php
$ccChoices = json_decode(html_entity_decode(\Input::cookie('cconsent')));
$allowedAnalyticsCookies = $ccChoices !== null && is_object($ccChoices->categories) && is_object($ccChoices->categories->analytics) &&
$ccChoices->categories->analytics->wanted === true;

if ($allowedAnalyticsCookies === true) {
    // User allowed cookies of category "analytics"
    // Your php code here
}
?>

在模板中(注意:这仅在4.9及以上版本中有效)

<?php
$ccChoices = json_decode(html_entity_decode(\Input::cookie('cconsent')));
$allowedAnalyticsCookies = $ccChoices !== null && is_object($ccChoices->categories) && is_object($ccChoices->categories->analytics) &&
$ccChoices->categories->analytics->wanted === true;
?>

<?php if ($allowedAnalyticsCookies === true): ?>
    // User allowed cookies of category "analytics"
    // Your template code here
<?php endif; ?>

在JavaScript中

var ccChoices = document.cookie.match(new RegExp('(^| )cconsent=([^;]+)'));
if (ccChoices !== null) {
    try {
        ccChoices = JSON.parse(ccChoices[2]);
    } catch (e) {
        ccChoices = null;
    }
}
if (ccChoices !== null && typeof ccChoices === 'object' && typeof ccChoices.categories.analytics === 'object' && ccChoices.categories.analytics.wanted === true) {
    // User allowed cookies of category "analytics"
    // Your js code here
}

版权

版权所有 2021 Kreativ&Soehne GmbH (https://www.kreativundsoehne.de)

有关更多信息,请参阅LICENSE。有关 brainsum/cookieconsent 的许可信息,请参阅此处