gmazzap / gm-cookie-policy
一个简单的插件,用于展示符合欧盟cookie法的消息。
Requires
- php: >=5.4
- composer/installers: ^1.0
This package is auto-updated.
Last update: 2024-08-26 14:39:22 UTC
README
一个简单的插件,用于展示符合欧盟cookie法的消息。
支持Composer,但不是必需的。需要PHP 5.4及以上。
主要面向开发者,但基本需求也可以由非开发者使用:基本配置可通过UI进行,但高级自定义只能通过钩子实现。
为什么还要另一个"cookie政策"插件?
已经有几个插件旨在做同样的事情,但我需要一个插件
- 支持Composer原生
- 即使在禁用javascript的情况下也能工作
- 提供PHP API,以便在当前用户接受政策时通知
- 提供javascript API,以便在当前用户接受政策时通知,并且能够通知其他脚本在用户接受政策时
- 不做得太多
- 没有数十个选项
- 不是过于"促销"的
而且我找不到一个能满足所有上述要求的插件。所以我写了它。
使用方法
激活后,将在"工具"主菜单下添加一个子菜单。
可以从那里访问设置页面,在该页面中可以设置cookie政策通知消息和其他一些基本选项。
许多其他自定义可以通过钩子实现。
PHP API
当插件激活时,您可以通过一个过滤器来通知用户是否接受政策
$accepted = apply_filters('cookie-policy-accepted', false);
这样,所有使用"跟踪cookie"的任何内容都可以在$accepted
为false时禁用/不加载,完全实施欧盟法律。
由于这是一个过滤器,它不会锁定到插件。即使禁用插件,依赖于上述过滤器的任何代码在插件不存在时也不会崩溃。
然而,PHP可以在用户点击接受政策的链接时重新加载页面组件(例如广告),这就是为什么还有一个javascript API的原因。
javascript API
简而言之,变量window.cookiePolicy.accepted
是一个布尔值,当用户接受政策时被设置为true
。
有两个自定义事件,脚本可以监听以检查该变量并相应地执行。
第一个事件是cookie-policy-loaded
,它发生在文档完全加载后。
jQuery(document).on('cookie-policy-loaded', function() { var cookiePolicy = window.cookiePolicy || { accepted: false }; if (cookiePolicy.accepted) { // page just loaded, this is a returning user that already accepted policy before } else { // this user has not accepted policy yet, they might be just landed to website } });
另一个事件是cookie-policy-accepted
,它在用户接受政策后被触发。
jQuery(document).on('cookie-policy-accepted', function() { var cookiePolicy = window.cookiePolicy || { accepted: false }; if (cookiePolicy.accepted) { // user just accepted policy, excellent, release the hounds :) } else { // this should never happen, if it does, something went wrong with javascript } });
与PHP API一样,javascript API也不会锁定到插件。可以禁用插件而不会破坏任何东西,也可以用可能触发相同事件并设置相同变量的其他脚本替换插件,以实现100%的后向兼容性。
翻译
该插件附带一些翻译
- 意大利语
- 罗马尼亚语(由@rmdiaconu提供)
欢迎更多翻译的PR。
许可证
MIT。