tollwerk / tw-eprivacy
电子隐私同意管理器
Requires
- typo3/cms-core: ^12
Replaces
- tollwerk/tw_eprivacy: v3.2.1
- typo3-ter/tw-eprivacy: v3.2.1
README
tollwerk 电子隐私同意管理器 ("ePrivacy") 提供了一种简洁的方式来管理 TYPO3 后端中的 Cookie。
特性
- 无需任何 JavaScript 即可工作!
- 默认情况下,所有 Cookie 都被阻止,无论它们是在客户端还是服务器端设置的。
- 作为 TYPO3 编辑器,您可以注册希望由用户管理的 Cookie。
- 提供了一个前端插件作为 TYPO3 内容元素,用户可以在其中为注册的 Cookie 提供或撤销同意。
- 提供了 TypoScript 条件和 Fluid ViewHelpers 来检查 Cookie 同意。
- 作为 TYPO3 编辑器,您可以设置内容元素的访问选项,以便只有在用户为所需的 Cookie 提供同意时才进行渲染。现有的 TYPO3 内容渲染钩子。
不包括
- 此扩展不包含任何 CSS 和 JavaScript。
支持的语言
- 英语
- 德语
- 西班牙语
- 法语
- 意大利语
安装
使用 composer 安装扩展
composer require tollwerk/tw-eprivacy
包含 TypoScript 模板
需要包含此扩展提供的 TypoScript。选择您的根页面,编辑 TypoScript 根模板,并添加 "tw_privacy" 模板。
创建所有必需的页面
此扩展需要在您的页面树中包含以下页面。
- 包含电子隐私前端插件的页面。在此页面上,通过在内容向导中选择“插件”创建一个新的内容元素,并选择“电子隐私同意管理器”。
- 包含数据隐私声明的页面。
- 包含 imprint 和其他法律信息的页面。此页面将被链接。
- 包含所有电子隐私记录的文件夹。或者,您可以使用包含电子隐私插件的页面来存储您的记录。
设置 TypoScript 常量
打开 TYPO3 模块 Web > 模板
,在页面树中选择您的根页面,选择“常量编辑器”和 ePrivacy 扩展。
以下选项是必需的,以便一切正常工作。所有其他选项都有默认值。
-
默认存储 PID
plugin.tx_tweprivacy_eprivacy.persistence.storagePid
是存储所有电子隐私记录的页面 UID。 -
imprint 页面 (ID)
plugin.tx_tweprivacy_eprivacy.settings.imprint
是 imprint 页面的 UID。 -
隐私政策页面 (ID)
plugin.tx_tweprivacy_eprivacy.settings.privacy
是数据隐私页面的 UID。 -
插件页面 (ID)
plugin.tx_tweprivacy_eprivacy.settings.pluginPid
是包含电子隐私前端插件的页面的 UID。
创建 Cookie 记录
您应该为您的网站使用的所有 Cookie 创建 Cookie 记录。没有对应 Cookie 记录的 Cookie 将被 ePrivacy 阻止。有两种类型的记录
电子隐私主题类型
每个 Cookie 记录都必须属于所谓的主题类型。主题类型用于将 Cookie 记录分组并提供有关所有记录的基本信息。典型的主题类型可以是“必需的”、“营销”、“统计”等。主题类型具有以下属性
- 可见: 启用/禁用分配给此主题类型的所有 Cookie 记录。
- 标题: 可读性强的标题,如“必需的 Cookie”、“营销”等。
- 描述: 对此类所有 Cookie 的可读性描述。
- 需要同意: 如果设置,用户可以选择为此类所有 Cookie 提供或撤销同意。如果没有设置,Cookie 仍然可见,并且具有它们的标题和描述,但用户不能撤销。
电子隐私主题
这是一个单个cookie记录。您至少需要一个名为'eprivacy_consent'的cookie来记住用户接受了或撤销了哪些其他cookie。为此,您可以使用以下截图中的值。
cookie记录具有以下属性
- 可见:启用/禁用此记录。
- 公开:如果未设置,则不会在前端插件中显示。
- 标题:可读的标题。
- 模式:可以是"Cookie"(默认)或"设置"。可以使用设置来将cookie分组,以便用户可以一次性接受或撤销所有cookie。
- 是否为第三方cookie:仅在模式设置为"Cookie"时可用。如果选中,将显示附加描述,警告用户一旦他为此cookie提供了同意,即使用户撤销了同意,该cookie也无法自动删除。
- 第三方主机:如果选中"是否为第三方cookie",则应设置主机/域以告知用户该外部cookie来自何处。
- 类型:ePrivacy主题类型。重要:此类型必须禁用"需要同意",否则无法正确保存用户同意。请参见上面的"ePrivacy主题"。
- 标识符:使用此功能检查与给定的ViewHelper或TypoScript条件相关的同意。
- 提供者:此cookie来自哪里?例如"Google"、"TYPO3"、"公司XY"等。
- 公开名称:cookie的实际名称。
- 属于设置:如果用户接受/撤销整个集合,则属于同一集合的所有cookie将一起更新。
- 有效期:cookie的生存期(以秒为单位)。
- 与会话一起过期:如果设置,cookie将在浏览器会话结束时过期。浏览器将决定在哪些情况下,例如关闭窗口、关闭标签等。
- 目的:对此cookie目的的简单描述。
- 目的简短描述:目的的简短描述。当由于缺少同意而未显示内容元素时将使用。请参见下面的"针对编辑器"。
针对编辑器
编辑器可以在TYPO3后端内部单独设置内容元素的所需同意。可以在每个内容元素的"访问"选项卡的"需要cookie同意"字段中找到该字段。
针对开发者
覆盖Fluid内容默认布局
为了根据cookie同意显示或隐藏内容元素(请参见上面的"针对编辑器"),此扩展通过设置lib.contentElement.layoutRootPaths.1 = EXT:tw_eprivacy/Resources/Private/Layouts/ContentElements/
覆盖了内容元素的默认Fluid布局。如果您的扩展需要覆盖默认布局,请将此扩展的文件 _Resources/Private/Layouts/ContentElements/Default.html 作为所有进一步更改的基础。否则,即使缺少对所需cookie的同意,内容元素也将始终显示!
Fluid ViewHelper
eprivacy:consent
<eprivacy:consent>
视图助手是一个专门的条件视图助手,可以测试用户对特定主题标识符的同意。示例
<!-- Test for a single subject identfier --> <eprivacy:consent identifier="google.analytics.ga"> <f:then>Google Analytics is allowed</f:then> <f:else>Google Analytics is not allowed</f:else> </eprivacy:consent> <!-- Test for multiple subject identfiers --> <eprivacy:consent identifier="{0: 'eprivacy.consent', 1: 'google.analytics.ga'}"> <f:then>Google Analytics is allowed</f:then> <f:else>Google Analytics is not allowed</f:else> </eprivacy:consent>
注意:由于结果取决于用户当前的同意设置,因此确保在未缓存环境/模板中使用视图助手至关重要!从版本3.1.0开始,缓存环境也应正常工作。如果出现任何问题,请毫不犹豫地提交问题。
eprivacy:getCookie
如果找到名称,则返回一个数组形式的cookie。
<!-- Show the "eprivacy_consent" cookie data. --> <f:debug>{eprivacy:getCookie(name: 'eprivacy_consent')}</f:debug> <!-- Check the "eprivacy_consent" cookie. --> <f:if condition="{eprivacy:getCookie(name: 'eprivacy_consent')}"> <f:else> <!-- Show something (like a consent dialog) if the cookie is not set. --> </f:else> </f:if>
TypoScript条件
类似于Fluid视图助手,还有一个自定义的TypoScript条件(作为表达式语言扩展实现)名为ePrivacy
,您可以使用它来测试用户对特定主题标识符的同意。
# Test for a single subject
[ePrivacy("enable.webfonts") == true]
# Add web fonts
[END]
# All these subjects must be allowed
[ePrivacy("google.gtm", "google._ga", "google._gid", "google._gat") == true]
# Add Google Tag Manager resources
[END]
cookie同意对话框
本扩展提供了一个对话框,当用户首次访问您的页面时会显示该对话框。只有当Cookie "eprivacy_consent"未设置时,才会显示该对话框。对话框包含以下按钮和链接
- 接受全部:接受所有(已注册,见“ePrivacy Subject”)Cookie,并刷新当前页面。
- 仅接受必要的:仅接受标记为必要的(已注册,见“ePrivacy Subject”)Cookie,撤销所有其他Cookie,刷新当前页面。
- 了解更多:打开包含ePrivacy插件的页面。
- 此外,还有链接到版权声明和数据隐私页面。
您可以在常量编辑器中禁用此对话框,请参阅plugin.tx_tweprivacy_eprivacy.settings.showDialog
。
手动渲染对话框
在常量编辑器中使用plugin.tx_tweprivacy_eprivacy.settings.showDialog
时,对话框将通过以下TypoScript代码包含
# Include the cookie consent dialog.
[{$plugin.tx_tweprivacy_eprivacy.settings.showDialog}]
page.2 < lib.ePrivacyDialog
[GLOBAL]
如果page.2
已被占用,或者出于某种原因,您希望在其他地方渲染对话框,您可以通过禁用plugin.tx_tweprivacy_eprivacy.settings.showDialog
并自行包含lib.ePrivacyDialog
来实现。
请注意,出于可访问性的原因,您应将对话框放置在<body>
-标签内的第一个内容中。
第三方Cookie
第三方Cookie属于其他域,一旦设置后,本扩展无法删除!此类Cookie可能是通过嵌入Google Maps或其他外部服务(使用<iframe
>-元素)设置的。
您仍然可以为此类情况创建属于“需要同意”主题的Cookie记录。在渲染实际代码或内容元素之前,检查用户是否已给出同意。您可以使用TypoScript条件或内容元素的访问选项来完成此操作。
不要忘记检查Cookie记录的是否为第三方Cookie
,以便扩展可以向用户显示相应的警告。