kaufmanndigital / gdpr-cookieconsent
一个可直接运行的包,将高级cookie同意横幅集成到您的Neos CMS网站上。
Requires
- neos/neos: >=5.0
- dev-master
- 5.4.3
- 5.4.2
- 5.4.1
- 5.4.0
- v5.3.x-dev
- 5.3.1
- 5.3.0
- v5.2.x-dev
- 5.2.1
- 5.2.0
- v5.1.x-dev
- 5.1.6
- 5.1.5
- 5.1.4
- 5.1.3
- 5.1.2
- 5.1.1
- 5.1.0
- v5.0.x-dev
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- v4.2.x-dev
- 4.2.8
- 4.2.7
- 4.2.6
- 4.2.5
- 4.2.4
- 4.2.3
- 4.2.2
- 4.2.1
- 4.2.0
- v4.1.x-dev
- 4.1.12
- 4.1.11
- 4.1.10
- 4.1.9
- 4.1.8
- 4.1.7
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.2
- 4.1.1
- 4.1.0
- v4.0.x-dev
- 4.0.19
- 4.0.18
- 4.0.17
- 4.0.16
- 4.0.15
- 4.0.14
- 4.0.13
- 4.0.12
- 4.0.11
- 4.0.10
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- v3.x-dev
- 3.3.7
- 3.3.6
- 3.3.5
- 3.3.4
- 3.3.3
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.0
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- v2.x-dev
- 2.2.9
- 2.2.8
- 2.2.7
- 2.2.6
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.1
- 2.0.0
- v1.x-dev
- 1.1.4
- 1.1.3
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- dev-task/prevent-scroll
- dev-feature/lifetime-config
- dev-bugfix/fix-document-rendering
- dev-feature/allow_links
- dev-bugfix/fix-remove-domtree
This package is auto-updated.
Last update: 2024-08-29 14:29:15 UTC
README
一个可直接运行的包,将高级cookie同意横幅集成到您的Neos CMS网站上。
这是我们对之前cookie同意包的进一步开发。通过针对每个服务(cookie)的单独配置,这个包是创建符合GDPR要求的网站的完美基础。
版本
本包有多种版本。在这里您可以检查兼容性和维护状态。
安装
比您想象的要简单!
只需运行 composer require kaufmanndigital/gdpr-cookieconsent
(或需要上面列出的版本之一)
安装后,需要运行doctrine迁移:./flow doctrine:migrate
配置
由于这个包已经准备好运行,您只需几步就可以配置您的cookie横幅。
- 在您的网站树中创建一个新的Cookie设置页面(包含在包中)。
- 切换到新创建的页面,并根据您的意愿编辑cookie横幅内容。
- 将cookie组添加到横幅中。
按维度同意
如果您在Neos中配置了一个或多个维度,并且需要保存不同维度的不同同意,您可以使用Settings.yaml进行配置
KaufmannDigital: GDPR: CookieConsent: consentDimensions: - country
此示例将为每个用户保存不同国家的不同同意。这意味着,当用户第一次切换到另一个国家时,他将再次看到CookieConsent。
它还影响了内容在cookie中的存储方式。现在在"consents"中有多个条目,而不是一个键"default"
,每个维度(-组合)都有自己的条目。一个简短的例子
{ "consents": { "deu": [ "necessary", "analytics", "marketing" ], "dnk": [ "necessary", "analytics", "marketing" ] }, "consentDate": "Tue, 11 Feb 2020 11:35:23 GMT", "expireDate": "Wed, 10 Feb 2021 23:00:00 GMT" }
如果您在consentDimensions
中配置了多个维度,它们将在这里使用下划线连接。例如:deu_de
排除特殊页面(如 imprint)
您有两种方法可以排除特殊页面显示Cookie-Settings。如果您有一个想要排除的特殊节点类型,您可以通过Settings.yaml将其设置为通用规则
KaufmannDigital: GDPR: CookieConsent: excludeDocumentNodeTypes: - 'Vendor.Package:Document.Imprint'
第一次交互后显示横幅
例如,在SEO方面,在用户第一次交互后显示横幅是有意义的。您可以轻松地配置包以这种方式运行
KaufmannDigital: GDPR: CookieConsent: hideBeforeInteraction: true
自动接受必要的cookie
在某些情况下,您可能需要在不进行用户交互的情况下接受必要的cookie。在这种情况下,您可以轻松地将以下内容添加到您的HTML中
<script>var KD_GDPR_CC_ACCEPT_NECESSARY = true;</script>
这使得包在没有显示同意窗口的情况下自动接受必要的cookie。当然,用户仍然可以手动打开窗口来调整决定。
通过头部接受
如果您正在从其他网站或应用程序加载站点内容,您已经拥有了所需的同意。如果是这样,您可以配置默认接受您的同意的头部。
KaufmannDigital: GRDPR: CookieConsent: headerConsent: acceptAll: 'User-Agent': 'Accepting-All-Agent*' acceptNecessary: 'User-Agent': 'Accepting-needed-Agent*'
在这里,您可以使用fnmatch()的语法进行通配符或类似操作。
通过URL参数接受
您还可以通过URL参数接受所有cookie或必要的cookie。请参阅配置方法
KaufmannDigital: GRDPR: CookieConsent: parameterConsent: acceptAll: 'gdpr': 'accept-all' acceptNecessary: 'gdpr': 'accept-needed'
在此示例中,您可以通过调用带有参数 ?gdpr=accept-all
的每个页面来接受所有cookie,并通过参数 ?gdpr=accept-needed
接受必要的cookie。
您还可以为每个案例定义多个参数/值组合。
响应用户的cookie决策
您可以使用这些方法之一来响应用户对哪些cookie接受的决策
动态加载JavaScript
当您在横幅中添加cookie时,可以粘贴您的JavaScript代码。该包将评估用户的决策,并在每个用户实时合并所需的JavaScript。您无需关心任何事情。JavaScript会完全自动加载。酷吧?😎
而且,不用担心性能。所有JS都会为每个单独的访问者压缩和缓存。
从cookie中读取cookie标识符
如果您已经以其他方式包含您的JavaScript,则可以依赖Choice-Cookie的值。
它名为KD_GDPR_CC
,包含您在配置时在后端定义的所有组和cookie的标识符。该cookie的有效负载可能看起来像这样
{ "consents": { "default": [ "necessary", "analytics", "marketing" ] }, "consentDate": "Tue, 11 Feb 2020 11:35:23 GMT", "expireDate": "Wed, 10 Feb 2021 23:00:00 GMT" }
如果您已配置按维度同意,则"consents"中有每个维度的条目,而不是默认值。查看示例。
所以只需检查consents并加载所需的JavaScript。
专业提示:如果您使用Google Tag Manager添加您的JS标签,您可以定义一个自定义的First-Party-Cookie
类型的数据层变量,它可以在触发器内部用作条件。
Google Tag Manager集成
CookieConsent和Google的Tag-Manager之间有两种交互方式。还支持新的"Consent Mode"。我们在这里提供了完整的指南。您也可以在替代Tag-Managers中使用"旧"方法(也在上面的链接中描述)。
添加重新打开链接
要创建一个用于重新打开横幅的链接,您只需放置一个目标为#GDPR-CC-open-settings
的链接即可
<a href="#GDPR-CC-open-settings">Cookie-Settings</a>
点击此类链接后,cookie横幅将通过API加载。将使用旧设置作为预设。
自定义cookie名称
在某些用例中,可能需要更改配置cookie的名称。这可以通过使用以下设置轻松实现
KaufmannDigital: GDPR: CookieConsent: cookieName: 'CUSTOM_COOKIENAME'
cookie生存期
出于GDPR(DSGVO)原因,可能需要将设置cookie(包含CookieConsent设置)的过期时间缩短。这可以通过Settings.yaml中的天数进行配置
KaufmannDigital: GDPR: CookieConsent: cookieLifetime: 365 #365 days
版本控制
在某些情况下,可能需要向已经给出同意的人展示cookie横幅。例如,如果添加了新的cookie。
为此,您只需编辑版本日期。您可以在cookie设置的NodeType检查器中找到它
更改日期后,横幅将再次对所有在更改日期之前提交cookie横幅的访问者显示。将使用旧设置作为预设。
在时间后使用户决策无效
有时有必要或有益于提醒用户他们的决策并要求他们再次确认。为此,可以在后端设置决策的TTL。
单位是秒。在设置的时间过期后,横幅将再次出现,并带有上次决策的默认设置,因此用户只需单击一下即可轻松接受旧决策。
值0
(默认值)将禁用横幅的重复显示。
样式
自定义横幅样式
横幅包含默认样式,旨在符合GDPR和可访问性要求。
您可以通过以下方式自定义横幅:
- 通过检查器中的输入字段设置主题颜色(按钮)、背景颜色、文本颜色和横幅的最大宽度。
- 创建一个包含您自己的样式的CSS文件,并使用Settings.yaml包含它
KaufmannDigital: GDPR: CookieConsent: customCSSFilepath: 'resource://Vendor.Package/Private/Styles/cookie-consent.css' #You can also use the public-path, of course
为了了解CSS样式和类名,您可以查看我们的SCSS文件:点击查看。
在您的自定义文件中,不需要写出所有的选择器,只需覆盖相关的自定义属性即可。以下示例文件展示了可以使用的自定义属性
.gdpr-cookieconsent-container { --cookieconsent-theme-color: rgb(0 137 203); --cookieconsent-overlay-color: rgb(0 0 0 / .75); --cookieconsent-bg-color: rgb(255 255 255 / 0.95); --cookieconsent-group-bg-color: rgb(255 255 255); --cookieconsent-button-text-color: rgb(255 255 255); --cookieconsent-button-primary-color: var(--cookieconsent-theme-color); --cookieconsent-button-secondary-color: rgb(255 255 255); --cookieconsent-button-primary-text-color: var(--cookieconsent-button-text-color); --cookieconsent-button-secondary-text-color: rgb(0 0 0); --cookieconsent-button-borderradius: 4px; --cookieconsent-spacing: 1rem; --cookieconsent-width: 1200px; --cookieconsent-focus-outline: black solid 2px; --cookieconsent-focus-outline-offset: 2px; } /* Switches options */ .gdpr-cookieconsent-switch { --cookieconsent-switch-thumb-size: 1.5rem; --cookieconsent-switch-thumb-color: rgb(255 255 255); --cookieconsent-switch-thumb-highlight-color: rgba(0 0 0 / 0.25); --cookieconsent-switch-length: calc(var(--cookieconsent-switch-thumb-size) * 2); --cookieconsent-switch-padding: 4px; --cookieconsent-switch-inactive-color: rgb(204 204 204); --cookieconsent-switch-active-color: var(--cookieconsent-theme-color); --cookieconsent-switch-thumb-size-small: 1rem; --cookieconsent-switch-outline: var(--cookieconsent-focus-outline); --cookieconsent-switch-outline-offset: var(--cookieconsent-focus-outline-offset); }
⚠️ 请注意,在检查器中设置的颜色将覆盖自定义CSS文件中的值。您可能需要先在检查器中取消设置颜色值。
在横幅中使用您自己的融合组件
有时调整CSS并不够,您可能只想在横幅中使用自己的按钮或文本组件。好消息是:您可以通过覆盖以下组件的renderer
来实现
KaufmannDigital.GDPR.CookieConsent:Component.Atom.AcceptAllButton
KaufmannDigital.GDPR.CookieConsent:Component.Atom.SaveButton
KaufmannDigital.GDPR.CookieConsent:Component.Atom.AcceptNecessaryButton
KaufmannDigital.GDPR.CookieConsent:Component.Atom.OpenIndividualSettingsButton
KaufmannDigital.GDPR.CookieConsent:Component.Atom.CloseIndividualSettingsButton
KaufmannDigital.GDPR.CookieConsent:Component.Atom.Headline
KaufmannDigital.GDPR.CookieConsent:Component.Atom.Text
访问按钮标签就像访问${props.label}
一样简单。
以下是一个如何使用您自己的按钮作为“接受所有”按钮的示例
prototype(KaufmannDigital.GDPR.CookieConsent:Component.Atom.AcceptAllButton) {
renderer = Vendor.Site:Component.PrimaryButton {
myLabel = ${props.label}
}
}
限制CORS头部到特定域名
如果您在多个域名上使用cookie横幅,您可以限制CORS头部到特定域名。如果您想在多个域名上使用相同的cookie横幅,但又不想允许所有域名访问cookie横幅API,这将非常有用。要仅允许从特定域名访问cookie横幅API,您可以在设置中配置允许的域名
KaufmannDigital: GDPR: CookieConsent: allowedOrigins: - 'subdomain.example.com' - 'example.org'
路线图/计划功能
- 流行cookie的预设。例如
- Google Analytics
- Matomo (Piwik)
- Intercom支持聊天
- ...
赞助商
我们想感谢我们的赞助商,他们在开发过程中给予了我们财务支持
您在我们解决方案中缺少功能吗?您想支持此包的开发?请随时联系我们!
邮箱:support@kaufmann.digital
维护者
此包由Neos Agency Kaufmann Digital维护。
请随时发送您的问题或请求至support@kaufmann.digital
问题和Pull-Requests都欢迎!
在安装或配置过程中遇到困难?缺少某些东西?发现了错误?
没问题,只需创建一个问题或打开一个pull request。我们会尽快查看。
许可证
许可协议为GPL-3,请参阅LICENSE