https://github.com/gridonic/statamic-consent-manager
A Statamic 3 addon to manage consent for cookies 🍪.
https://github.com/gridonic/statamic-consent-manager
cookie-consent statamic-3 statamic-addon
Last synced: about 1 month ago
JSON representation
A Statamic 3 addon to manage consent for cookies 🍪.
- Host: GitHub
- URL: https://github.com/gridonic/statamic-consent-manager
- Owner: gridonic
- Created: 2021-08-22T20:16:06.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-11T08:59:04.000Z (over 1 year ago)
- Last Synced: 2025-08-15T23:15:50.322Z (7 months ago)
- Topics: cookie-consent, statamic-3, statamic-addon
- Language: PHP
- Homepage:
- Size: 17.6 KB
- Stars: 0
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Statamic Consent Manager
A Statamic 3 addon to manage consent for cookies 🍪.
**Features**
* Define consent groups _and_ scripts loaded dynamically only when consent for a group is given.
* Provides a simple javascript API to read and change consent for users.
* Consent is stored client-side only, making it possible to use the static cache.
## Installation
Run the following commands:
```
composer require gridonic/statamic-consent-manager
php artisan vendor:publish --tag=statamic-consent-manager-config
```
## Configuration
Edit the configuration file located in `config/statamic/consent_manager.php`:
```php
'local',
// Consent groups managed by the addon. Feel free to change, remove or add your own groups.
// Scripts are dynamically added to the DOM only if consent for their group is given.
'groups' => [
'necessary' => [
'required' => true,
'consented' => true,
'scripts' => [
[
// The full script tag to include in the page if consent is given.
'tag' => 'console.log(\'script dynamically loaded with consent manager\');',
// Choose "head" or "body" to append the script to the page.
'appendTo' => 'head',
],
],
],
'marketing' => [
'required' => false,
'consented' => false,
'scripts' => [],
],
'statistics' => [
'required' => false,
'consented' => false,
'scripts' => [],
]
],
];
```
## Usage
1. Define your consent groups and their scripts in the configuration.
2. Add the `{{ consent_manager }}` tag in the `head` of your layout.
That's it! 🥳 What's left up to you is to design a nice cookie banner and
modify consent data by using the javascript API.
### Rendering a cookie banner
The addon provides the tag `{{ consent_manager:groups }}` which can be used to loop over
consent groups in Antlers.
```
{{ consent_manager:groups }}
Group ID: {{ id }}
Consented by default: {{ consented }}
Required: {{ required }}
{{ /consent_manager:groups }}
```
> ℹ️ To read of modify consent, you need to use the javascript API, because the data is stored client-side only.
### Javascript API
The addon exposes a `window.consentManager` object to read and write consent data.
| Method | Description |
| --- | --- |
| `getConsent(group: string): boolean` | Check if the user has consented to a group. |
| `setConsent(group: string, consent: boolean)` | Set or remove consent to a group. If consent is given, all scripts of the group are appended to the DOM. |
| `isRequired(group: string): boolean` | Check if a group is required. |
| `getGroups(): Array` | Get all consent groups. |
| `getGroup(group: string): Object` | Get information about a single group. |