Integrate cookieconsent.com in SilverStripe

Fund package maintenance!

Installs: 6

Dependents: 0

Suggesters: 0

Security: 0

Stars: 3

Watchers: 2

Forks: 0

Open Issues: 1


1.1.0 2021-02-08 11:26 UTC

This package is auto-updated.

Last update: 2022-05-13 10:47:44 UTC


Build Status scrutinizer Code coverage


Yet another cookie consent module. This one integrates https://www.cookieconsent.com/ which allow you to have various layouts (including blocking layouts) and load/allow cookies per type.

NOTE: even if it has the same name (and the same version number!!), it is NOT the cookieconsent from https://www.osano.com/cookieconsent

How it works

When you require your scripts, you should add their type in order to load them according to user preference:

The four types are :

  • strictly-necessary
  • functionality
  • tracking
  • targeting

And they will be rendered in something like this. Please note the text/plain type that prevents the script for being executed. This is what you should do if you include your scripts manually.

<script type="text/plain" cookie-consent="strictly-necessary" src="strict.js">
<script type="text/plain" cookie-consent="functionality" src="functional.js">
<script type="text/plain" cookie-consent="tracking" src="tracking-performance.js">
<script type="text/plain" cookie-consent="targeting" src="targeting-advertising.js">

or for inline scripts

<script type="text/plain" cookie-consent="tracking">
console.log("i'm a tracking script");

If you use the Requirements api, in order to specify this extra attribute, you need a Requirements_Backend that supports it. This is delegated to my defer backend module.

This is how you would add a tracking script with the updated requirements api

Requirements::javascript('myscript',['cookieconsent' => 'tracking'])

For php cookies

If you set cookies on the serverside, you can check the CookieConsent::isAllowed method or use the CookieConsent::setCookie helper.


  # use local js or cdn js
  use_cdn: false
  # class name of your privacy page. leave blank for default
  privacy_notice_class: 'PrivacyNoticePage'
    # simple, headline, interstitial, standalone
    notice_banner_type: "interstitial"
    # implied, express => should really by express for GDPR
    consent_type: "express"
    # light, dark
    palette: "dark"
    change_preferences_selector: "#cookieconsent-preferences"

Check compliance

You can use cookiebot the check compliance https://www.cookiebot.com/en/gdpr-cookies/

This can also helps customers to realize the necessity of this module


Tested with 4.6 but should work on any ^4 projects


LeKoala - thomas@lekoala.be