dmstr / yii2-cookie-consent
Yii2 Cookie Consent Widget
Installs: 43 452
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 8
Forks: 3
Open Issues: 2
Type:yii2-extension
Requires
- npm-asset/dmstr--cookie-consent: ^0.4.0
- yiisoft/yii2: ~2.0.0
README
solution to the EU Cookie Law
Getting started
Installation
composer require dmstr/yii2-cookie-consent
CookieConsentHelper Component
yii config
'components' => [ 'cookieConsentHelper' => [ 'class' => dmstr\cookieconsent\components\CookieConsentHelper::class ] ]
Usage with PHP
use dmstr\cookieconsent\widgets\CookieConsent; <?= CookieConsent::widget([ 'name' => 'cookie_consent_status', 'path' => '/', 'domain' => '', 'expiryDays' => 365, 'message' => Yii::t('cookie-consent', 'We use cookies to ensure the proper functioning of our website. For an improved visit experience we use analysis products. These are used when you agree with "Statistics".'), 'save' => Yii::t('cookie-consent', 'Save'), 'acceptAll' => Yii::t('cookie-consent', 'Accept all'), 'controlsOpen' => Yii::t('cookie-consent', 'Change'), 'detailsOpen' => Yii::t('cookie-consent', 'Cookie Details'), 'learnMore' => Yii::t('cookie-consent', 'Privacy statement'), 'visibleControls' => true, 'visibleDetails' => false, 'link' => '#', 'consent' => [ 'necessary' => [ 'label' => Yii::t('cookie-consent', 'Necessary'), 'checked' => true, 'disabled' => true ], 'statistics' => [ 'label' => Yii::t('cookie-consent', 'Statistics'), 'cookies' => [ ['name' => '_ga'], ['name' => '_gat', 'domain' => '', 'path' => '/'], ['name' => '_gid', 'domain' => '', 'path' => '/'] ], 'details' => [ [ 'title' => Yii::t('cookie-consent', 'Google Analytics'), 'description' => Yii::t('cookie-consent', 'Create statistics data') ], [ 'title' => Yii::t('cookie-consent', 'Goal'), 'description' => Yii::t('cookie-consent', '_ga, _gat, _gid, _gali') ] ] ] ] ]) ?>
<?php if (\Yii::$app->cookieConsentHelper->hasConsent('statistics')): ?> <!-- Google Analytics Script--> <?php endif; ?>
Usage with TWIG
{{ use('dmstr/cookieconsent/widgets/CookieConsent') }} {{ CookieConsent_widget({ "name": "cookie_consent_status", "path": "/", "domain": "", "expiryDays": 365, "message": t("cookie-consent", "We use cookies to ensure the proper functioning of our website. For an improved visit experience we use analysis products. These are used when you agree with 'Statistics'."), "save": t("cookie-consent", "Save"), "acceptAll": t("cookie-consent", "Accept all"), "controlsOpen": t("cookie-consent", "Change"), "detailsOpen": t("cookie-consent", "Cookie Details"), "learnMore": t("cookie-consent", "Privacy statement"), "visibleControls": false, "visibleDetails": false, "link": "#", "consent": { "necessary": { "label": t("cookie-consent", "Necessary"), "checked": true, "disabled": true }, "statistics": { "label": t("cookie-consent", "Statistics"), "cookies": [ {"name": "_ga", "domain": "", "path": "/"}, {"name": "_gat", "domain": "", "path": "/"}, {"name": "_gid", "domain": "", "path": "/"}, {"name": "_gali", "domain": "", "path": "/"} ], "details": [ { "title": t("cookie-consent", "Google Analytics"), "description": t("cookie-consent", "Create statistics data") }, { "title": t("cookie-consent", "Goal"), "description": t("cookie-consent", "_ga, _gat, _gid, _gali") } ] } } }) }}
{% if app.cookieConsentHelper.hasConsent('statistics') %} {# Google Analytics Code #} {% endif %}
Options
option | description | default | type |
---|---|---|---|
name | Defines the cookie name that Cookie Consent will use to store the status of the consent. Default is cookie conset helper's cookie name | "" | STRING |
path | Defines the cookie path | "/" | STRING |
domain | Defines the cookie domain | "" | STRING |
expiryDays | Defines the cookie exipration days | 365 | INT |
message | The message in the popup | "This website uses cookies to ensure you get the best experience on our website." | STRING |
save | The save button text | "Save" | STRING |
acceptAll | The accept all button text | "Accept all" | STRING |
controlsOpen | The open controls button text | "Change" | STRING |
detailsOpen | The open details button text | "Details" | STRING |
learnMore | The link text | "More info" | STRING |
visibleControls | If the controls panel should start open | false | BOOLEAN |
visibleDetails | If the details panel should start open | false | BOOLEAN |
link | The link pointing to your privacy policy page | "#" | STRING |
consent | A configuration array that will tell the cookie consent what it should do. Keys are the consent values that will be stored in the consent cookie. Labels are the checkbos labes. If no label is set the key will be used instead. The cookies array are a list of cookies names that can be deleted (when possible) when the corresponding consent value is revoked. See the above example "Usage with PHP". Also is possible to start the checkbox checked or disabled | [] | ARRAY |
Toggle popup, controls and details
<button class="cookie-consent-open">open</button> <button class="cookie-consent-close">close</button> <button class="cookie-consent-toggle">toggle</button> <button class="cookie-consent-controls-open">Open controls</button> <button class="cookie-consent-controls-close">Close controls</button> <button class="cookie-consent-controls-toggle">Toggle controls</button> <button class="cookie-consent-details-open">Open Details</button> <button class="cookie-consent-details-close">Close Details</button> <button class="cookie-consent-details-toggle">Toggle details</button>
CSS Example
.cookie-consent-popup { animation-name: show; animation-duration: 1s; animation-timing-function: ease; display: none; position: fixed; bottom: 0; left: 0; width: 100%; z-index: 999999; } .cookie-consent-popup.open { display: block; opacity: 1; animation-name: show; animation-duration: 1s; animation-timing-function: ease; } .cookie-consent-controls { max-height: 0; overflow: hidden; -webkit-transition: max-height 0.5s ease-out; -moz-transition: max-height 0.5s ease-out; transition: max-height 0.5s ease-out; } .cookie-consent-controls.open { margin: 0 0 30px 0; max-height: 600px; } .cookie-consent-details { max-height: 0; overflow: hidden; -webkit-transition: max-height 0.5s ease-out; -moz-transition: max-height 0.5s ease-out; transition: max-height 0.5s ease-out; } .cookie-consent-details.open { max-height: 600px; } @keyframes show { from {opacity: 0;} to {opacity: 1;} } @keyframes hide { from {opacity: 1;} to {opacity: 0;} }
Settings config example phemellc/yii2-settings
- section: cookie-consent
- key: config
- type: object
{ "name": "cookie_consent_status", "path": "/", "domain": "", "expiryDays": 365, "message": "We use cookies to ensure the proper functioning of our website. For an improved visit experience we use analysis products. These are used when you agree with 'Statistics'.", "save": "Speichern", "learnMore": "Datenschutzerklärung", "link": "#", "consent": { "necessary": { "label": "Necessary", "checked": true, "disabled": true }, "statistics": { "label": "Statistics", "cookies": [ { "name": "_ga" }, { "name": "_gat", "domain": "", "path": "/" }, { "name": "_gid", "domain": "", "path": "/" } ] }, "0": "marketing", "1": "external-media" } }
<?php $config = Yii::$app->settings->get('config', 'cookie-consent', []); $config = isset($config->scalar) ? $config->scalar : '{}'; $config = json_decode($config, true); ?> <?= CookieConsent::widget($config) ?>
Worth knowing
Widgets throws an yii\base\InvalidConfigException
if you define an invalid cookie consent helper component