dmstr / yii2-cookie-consent
Yii2 Cookie Consent Widget
Installs: 40 984
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
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