tollwerk/tw-eprivacy

电子隐私同意管理器

安装次数: 1,348

依赖项: 0

建议者: 0

安全: 0

星标: 1

关注者: 5

分支: 0

开放性问题: 3

类型:typo3-cms-extension

v3.2.1 2024-09-06 10:20 UTC

This package is auto-updated.

Last update: 2024-09-06 10:21:43 UTC


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,以便扩展可以向用户显示相应的警告。