xddesigners / silverstripe-cookieconsent
适用于 Silverstripe 的 Cookie 条和同意检查器
Requires
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 用户的责任!