A plugin to implement cookieconsent in Kirby.
- Uses the open source cookieconsent library
- Provides default translations for 5 cookie categories
- Multilingual support (EN/DE/FR)
- Customizable
The recommended way of installing is by using Composer.
composer require zephir/kirby-cookieconsent
Download and copy this repository to /site/plugins/kirby-cookieconsent
.
git submodule add https://github.com/zephir/kirby-cookieconsent.git site/plugins/kirby-cookieconsent
Add snippet('cookieconsentCss')
to your header and snippet('cookieconsentJs')
to your footer.
'zephir.cookieconsent' => [
'cdn' => false,
'revision' => 1,
'root' => 'document.body',
'autoClearCookies' => true, // Only works when the categories have an autoClear array
'autoShow' => true,
'hideFromBots' => true,
'disablePageInteraction' => false,
'lazyHtmlGeneration' => true,
'guiOptions' => [
'consentModal' => [
'layout' => 'box',
'position' => 'bottom right',
'flipButtons' => false,
'equalWeightButtons' => true
],
'preferencesModal' => [
'layout' => 'box',
// 'position' => 'left', // only relevant with the "bar" layout
'flipButtons' => false,
'equalWeightButtons' => true
]
],
'categories' => [
'necessary' => [
'enabled' => true,
'readOnly' => true
],
'measurement' => [],
'functionality' => [],
'experience' => [],
'marketing' => []
],
'translations' => [
'de' => require_once(__DIR__ . '/translations/de.php'),
'en' => require_once(__DIR__ . '/translations/en.php'),
'fr' => require_once(__DIR__ . '/translations/fr.php')
],
'language' => [
'locale' => 'en',
'direction' => 'ltr'
]
]
Each cookie category can be used to control certain scripts. To learn how to manage scripts, head over to the CookieConsent documentation.
Categories that are predefined by this plugin:
Name | Enabled | Description |
---|---|---|
necessary | ✅ | The necessary cookies, can't be disabled by the user. |
functionality | ✅ | Cookies for basic functionality and communication. |
experience | ✅ | Cookies to improve the quality of the user experience and enable the user to interact with external content, networks and platforms. |
measurement | ✅ | Cookies that help to measure traffic and analyze behavior. |
marketing | ✅ | These cookies help us to deliver personalized ads or marketing content to you, and to measure their performance. |
Predefined means that there are translations in all languages for each category.
To enable/disable categories you can use the categories
option of the plugin.
'zephir.cookieconsent' => [
'categories' => [
'necessary' => [
'enabled' => true, // marks the category as enabled by default
'readOnly' => true
],
'measurement' => [],
'functionality' => [],
'experience' => [],
'marketing' => []
],
]
An empty array defines the category with the default options. You can pass additional options like
enabled
orreadOnly
in the array. Learn more about those options in the CookieConsent Documentation.
To remove a category you have to set its value to false
.
'zephir.cookieconsent' => [
'categories' => [
'necessary' => [
'enabled' => true,
'readOnly' => true
],
'measurement' => [],
'functionality' => false, // will not be shown
'experience' => false, // will not be shown
'marketing' => []
],
]
If you have a single language setup (kirby option languages
not set to true
), you will have to define the language
option of the plugin.
For multi-language setups you don't have to do anything, the plugin automatically uses the kirby language or falls back to the first translation in the translations array.
'zephir.cookieconsent' => [
'language' => [
'locale' => 'de', // The translation to use, default is en
'direction' => 'ltr' // Either ltr or rtl, default is ltr
]
]
The translations are a central part of the plugin. By default, we provide translations for EN, DE, FR and the categories mentioned in 3.3 Predefined cookie categories.
To customise or override the default translations, you will need to use the translations
option.
For this example we are overriding one string and adding a new category in the sections part of the EN translation.
- Create a new folder in your project. For this example we call it
cc-translations
. - In that folder, create a new file
en.php
.
<?php
// site/cc-translations/en.php
return array_replace_recursive(
// We assume the plugin was installed as suggested in the installation section of the readme.
require_once(__DIR__ . '/../plugins/kirby-cookieconsent/translations/en.php'),
[
'consentModal' => [
'title' => 'Lorem ipsum dolor!', // Override consentModal title
],
"preferencesModal" => [
"sections" => [
[ // Add a new category in sections
"title" => "Custom scripts",
"description" => "Diese Cookies helfen uns, Ihnen personalisierte Werbung oder Marketinginhalte bereitzustellen und deren Leistung zu messen.",
"linkedCategory" => "custom-scripts",
],
]
]
]
);
- Now you need to require (or include) this file in
config.php
. Because we want to see the new categorycustom-scripts
we also need to update thecategories
option.
'zephir.cookieconsent' => [
'categories' => [
'custom-scripts' => []
],
'translations' => [
'en' => require_once(__DIR__ . '/../cc-translations/en.php')
]
]
You can override the whole translation file by copying the default file and adjusting the values. You can also require the default translation and manually alter the array by modifying, adding or deleting entries.
You can find all available events in the CookieConsent Documentation.
The CookieConsent object is available through the window object (
window.CookieConsent
).
MIT