xddesigners/silverstripe-cookieconsent

适用于 Silverstripe 的 Cookie 条和同意检查器

安装: 41

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

dev-main 2024-07-22 14:54 UTC

This package is auto-updated.

Last update: 2024-09-22 15:07:49 UTC


README

符合 GDPR 的 Cookie 条和同意检查器

安装

通过 composer 安装模块

composer require xddesigners/silverstripe-cookieconsent

在您的 base Page.ss 中包含弹出模板

<% include CookieConsent %>

配置

您可以通过 yml 配置文件配置 Cookie 和 Cookie 组。您需要按提供者进行配置,对于提供者,点号将被转换为下划线,例如 ads.marketingcompany.com 变为 ads_marketingcompany_com。

通过 yml 配置 Cookie,您可以在代码中检查同意并进行必要的更改,例如要求分析或其他 Cookie 或跳过放置它们。

您可以通过“站点配置”编辑已配置的 Cookie 的文本,在此处 CMS 用户还可以添加其他 Cookie。例如,如果网站用户决定嵌入 YouTube 视频,他或她可以指定 YouTube 放置的 Cookie。我建议创建以下三个组,这些组具有默认内容,当然您可以根据需要配置组。

XD\CookieConsent\CookieConsent:
  cookies:
    Necessary:
      local:
        - CookieConsent
        - ShowPopUp
    Marketing:
      ads_marketingcompany_com:
        - _track
    Analytics:
      local:
        - _ga
        - _gid

此模块包含我们之前遇到的一些 Cookie 的默认内容。如果您想自己设置这些 Cookie 的默认内容,这是可能的,通过 lang 文件。如果您有不在本模块中的 Cookie 描述,对 lang 文件的贡献将非常受欢迎!翻译通过 Transifex 管理。

文件结构如下

en:
  CookieConsent_{provider}:
    {cookie}_Purpose: 'Cookie description'
    {cookie}_Expiry: 'Cookie expire time'
  # for cookies from your own domain:
  CookieConsent_local:
    PHPSESSID_Purpose: 'Session'
    PHPSESSID_Expiry: 'Session'
  # for cookies from an external domain:
  CookieConsent_ads_marketingcompany_com:
    _track_Purpose: 'Cookie description'
    _track_Expiry: 'Cookie expire time'

然后您可以通过调用

if (CookieConsent::check('Analytics')) {
    // include google analytics
}

您还可以配置默认 js 和 css 的需求。如果您选择默认不要求,请确保将您捆绑中的至少 JavaScript 组合在一起!

XD\CookieConsent\CookieConsent:
  include_javascript: true
  include_css: true
  create_default_pages: true

启用 XHR 模式

当您使用静态发布时,您将想要启用 XHR 模式。XHR 模式通过 xhr 请求接受 Cookie 并使用一些 JavaScript 显示/隐藏同意弹出窗口。

在您的 yml 配置中将 xhr_mode 设置为 true

XD\CookieConsent\CookieConsent:
  xhr_mode: true

在您的 JavaScript 中,您可以使用实用程序类。这处理 xhr 请求和弹出窗口的可见性

import CookieConsent from '../vendor/xd/cookieconsent/javascript/src/cookieconsent';
const consent = new CookieConsent();
consent.enableXHRMode();

在您的捆绑中包含资产

如果您想在自己的捆绑中包含 scss 或 js,您可以通过以下方式操作

// Import the CookieConsent utility 
import CookieConsent from '../vendor/xd/cookieconsent/javascript/src/cookieconsent';

const consent = new CookieConsent();

// This tool let's you check for cookie consent in your js files before you apply any cookies
if (consent.check('Marketing')) {
  // add marketing cookie
}

// If you use Google Tag Manager this tool can also push the consent into the dataLayer object
consent.pushToDataLayer();

对于 scss,您只需导入 scss 文件

@import "cookieconsent/scss/cookieconsent";

确保文件到文件的相对路径与您的用例匹配。

默认页面

此模块在运行 dev/build 时还设置了 3 个默认页面。如果您想防止这种行为,您应该禁用 create_default_pages 配置设置。创建的页面是 CookiePolicyPage、PrivacyPolicyPage 和 TermsAndConditionsPage,每个页面类型都填充了基本内容。当然,更改这些文本以适应您的用例是您或您的 CMS 用户的责任!