Как закрыть куки на сайте Joomla?
В Евросоюзе относительно недавно появилась проблема: законодательство потребовало от сайтов использовать куки только в случае согласия пользователя. Конечно, это не относится к таким важным для работоспособности сайта вещам, как авторизация, но социальные кнопки, видео со сторонних сервисов не могут сохранять информацию в куках без одобрения юзера.
Конечно, уже появилиь некоторые платные решения для сайтов, однако, они не универсальны и несовершенны, например, плагин Monster Cookies. Промучившись с ним, я его полностью снес, позаимствовав лишь некоторые стили оформления диалогового окна.
На сайте стояли кнопки соцсетей, Гугл Аналитикс, модуль видео от Vimeo. Мне удалось закрыть это все с возможностью выбора для пользователя «Accept Cookies». Использовал как JavaScript, так и php.
Принцип прост: если пользователь нажимал «принять куки», в куках сохранялась переменная cookies_accept. Далее в зависимости от ее существования уже подгружался (или нет) закрытый контент.
Что-то типа такого:
1 2 3 4 5 |
if(isset($_COOKIE["cookies_accept"]) && $_COOKIE["cookies_accept"]=="accept"): //не меняем output else: $output="<img src='картинка' title='You need to accept the cookies to use it'>"; endif; |
JavaScript:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<script> function setCookie (name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); } function getCookie(name) { var cookie = " " + document.cookie; var search = " " + name + "="; var setStr = null; var offset = 0; var end = 0; if (cookie.length > 0) { offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(";", offset) if (end == -1) { end = cookie.length; } setStr = unescape(cookie.substring(offset, end)); } } return(setStr); } cookies_accept=""; cookies_accept = getCookie("cookies_accept"); if(cookies_accept=="accept"){ request=jQuery.ajax({ type: 'POST', url: '/ajax/get_video.php', data: 'sss=1', success: function(request) { jQuery('.vimeo').html(request); } }); jQuery("div.cc-cookies").addClass('content-hidden'); var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-xxxxx']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })(); }else{ jQuery(".cc-cookies").removeClass('content-hidden'); } jQuery(document).ready(function(){ jQuery("#accept").click(function(){ jQuery("div.cc-cookies").addClass('content-hidden'); setCookie("cookies_accept", "accept"); }); }); </script> |
Хочется создать какое-то универсальное решение для всех сайтов, но пока ничего не придумал. У каждого свои особенности.
Случайные посты
Категория: Joomla