Функционал
Добавление на сайт функционала управления куками для посетителей сайта
Данная статья написана
непрограммистами для непрограммистов!
Куки (англ. cookies) являются текстовыми файлами, сохраненными в браузере компьютера (мобильного устройства) пользователя при посещении Интернет-сайта для отражения совершенных им действий. Эти файлы позволяют не вводить заново или выбирать те же параметры при повторном посещении сайта, например, выбор языковой версии.
Для выполнения требований действующего законодательства Республики Беларусь в отношении обработки cookie администраторам и редакторам сайтов необходимо выполнить ряд первичных/разовых действий, а в последующем неукоснительно выполнять правила добавления нового функционала и публикации контента на сайте с учетом требований в отношении обработки cookie.
Цель - привести обработку cookie на сайте в соответствии с действующим законодательством Республики Беларусь
Задачи - посетитель сайта должен иметь возможность:
1. При первом входе на сайт получить возможность выбора для себя индивидуальных/персонифицированных настроек куков с данного сайта, и при этом, до момента совершения им какого-либо выбора (все разрешить, все запретить, настроить) сайт не должен создавать никаких куков (за исключением необходимых) на компьютере/телефоне пользователя.
2. При последующих посещениях сайта иметь возможность изменить свой первоначальный (предшествующий) выбор персональных настроек куков с данного сайта, и при этом, в случае отказа от каких-либо ранее разрешенных им куков, данные куки должны быть немедленно удалены с компьютера/телефона данного посетителя сайта (за исключением необходимых).
Еще раз - посетитель сайта должен иметь возможность управлять файлами куков, созданными на его компьютере/телефоне от имени Вашего сайта с помощью функционала самого сайта, за исключением файлов куки, отнесенных к категории «Необходимые (технические)».
ШАГ 1: провести аудит текущего состояния обработки cookie на сайте, в зависимости от результатов будут различаться и дальнейшие действия, возможные варианты результата аудита (для большинства видео есть тайм-коды):
Данное видео нужно только для того, чтобы Вы определились с последующими действиями!
Напоминаем: функционал управления - это возможность менять настройки, управлять ими,
а просто одна кнопка "принять" это не управление!
ШАГ 2: для каждого, выше указанного варианта, необходимо проделать соответствующие действия:
В1 & Б1 - все хорошо, но не забывайте правила администрирования/редактирования сайта в контексте выполнения требований действующего законодательства по защите персональных данных.
В2 - необходимо исправить ошибки - обращайтесь в техподдержку.
Б2 - или Вы самостоятельно исправляете ошибки, или убираете данный функционал с сайта и далее действуете по варианту А1.
А2 - необходимо удалить с сайта панель согласия на использование куков и далее действовать по варианту А1
Для удаления с сайта панели согласия на использование куков, отключите соответствующий модуль - на вкладке Дизайн, в секции Модули выбрать вид модулей "Текстовый блок", найти модуль "Согласие на использование куков" и отключить его.
A1 - установка на сайт типового функционала (от техподдержки) - все работы разделим на четыре этапа:
- подготовительный этап, - публикация на сайте необходимых документов, - настройка функционала, - проверка корректности работы функционала.
Подготовительный этап:
1. Отказ от любых сторонних сервисов, встраиваемых на сайт (через js скрипты или ifrаme), если они создают куки
Исключение: Google Translate, Яндекс.Переводчик, Яндекс.Поиск, Яндекс.Метрика
В том числе:
- Замена Яндекс.Поделиться на наш сервис:
В текстовом модуле "Кнопки "Поделиться"" код:
<script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script>
<script src="//yastatic.net/share2/share.js"></script>
<div class="ya-share2" data-services="facebook,vkontakte,odnoklassniki,gplus,twitter,linkedin,skype,telegram" data-limit="4"></div>
заменить на:
<span>поделиться в:</span> <div class="ww_share" data-buttons="telegram,viber,facebook,vkontakte,odnoklassniki,copy"></div> <script type="text/javascript" src="/scripts/share.js" defer></script>
- Замена различных сторонних сервисов, встроенных на сайт, на ссылки (как графические, так и текстовые) для открытия их в новой вкладке: интерактивные карты, просмотр pdf и офисных файлов через вьюверы, просмотра видео с YouTube и с других видеохостингов:
ВНИМАНИЕ ВАЖНО!
Обучающие видеоролики COOKIE 06 и COOKIE 07 относятся только к тем, кто уже использует на своем сайте вьюверы и в них показан новый алгоритм для их использования!
Использование вьюверов на сайте НЕОБЯЗАТЕЛЬНО, они нужны только для удобства посетителей Вашего сайта.
COOKIE 06. Изменение способа размещения офисных документов для просмотра на сайте через вьювер
(развернуть) COOKIE 07. Изменение способа размещения pdf файлов для просмотра на сайте через вьювер
(развернуть)
- Отказ от использования Гугл/Яндекс форм в пользу встроенного функционала системы.
- Отключение (скрытие и\или полное удаление и деактивация) других сторонних сервисов, могущих потенциально вызвать появление нежелательных куки-файлов на Вашем сайте (интерактивные игры, квизы, кроссворды, чаты с онлайн-консультантами, чат-боты, сторонние анкетирования от сервисов Google и других сервисов,...):
2. Приведение Яндекс.Метрики к минимально возможному сбору персональных данных пользователей:
ВНИМАНИЕ! ВАЖНО!
На Вашем сайте должна быть установлена и подключена ЯндексМетрика, для этого у Вас должен быть почтовый аккаунт на ЯндексПочте и ранее Вы или другой специалист Вашей организации должны были на сайте внести в соответствующие модули и настройки сайта коды ЯндексСчетчика (YandexCounter) и ЯндексИнформера (YandexInformer) из личного кабинета Метрики: https://metrika.yandex.ru.
Если Вы не выполняли данные операции и не в курсе текущей ситуации на Вашем сайте с ЯндексМетрикой, то Вам сюда: https://youtu.be/iXgSuGZIlW4
- Автоматические цели; Вебвизор, карта скроллинга, аналитика форм, карта скроллинга, аналитика форм; Электронная коммерция; Контентная аналитика: ВЫКЛ
- На вкладке Вебвизор - все варианты ВЫКЛ
Публикация на сайте необходимых документов:
На сайте в обязательном порядке должна быть опубликована "Политика в отношении обработки персональных данных".
Так же советуем отдельными документами разместить "Права субъекта персональных данных", "Политика в отношении обработки cookie" и "Политика видеонаблюдения".
Политику в отношении обработки cookie необходимо дословно, без изменений, скопировать с любого из шаблонов шаблон1.веб-мастерская.бел, шаблон2.веб-мастерская.бел,..., шаблон9.веб-мастерская.бел:
<p style="text-align: justify;">1.Куки (англ. cookies) являются текстовым файлами, сохраненными на компьютере (мобильном устройстве) пользователя интернет-сайтов <span style="background-color: #ffff00;">[«укажите название своей организации без квадратных скобок и без выделения желтым маркером!!»]</span> (далее - Сайт, Сайты) при их посещении для отражения совершенных действий. Эти файлы позволяют не вводить заново или выбирать те же параметры при повторном посещении Сайта, например, выбор языковой версии.</p>
<p style="text-align: justify;">Целью обработки куки является обеспечение удобства пользователей Сайтов и повышение качества их функционирования.</p>
<p style="text-align: justify;">2. На Сайтах обрабатываются следующие типы куки:</p>
<ul style="text-align: justify;">
<li>необходимые (технические) - нужны для функционирования корректной работы сайта;</li>
<li>функциональные - позволяют обеспечить индивидуальный опыт использования сайта и устанавливаются в ответ на действия субъекта персональных данных;</li>
<li>статистические (аналитические) - позволяют хранить историю посещений страниц сайта в целях повышения качества его функционирования, чтобы определить наиболее и наименее популярные страницы.</li>
</ul>
<p style="text-align: justify;">3. Обрабатываемые на Сайтах куки и сроки их хранения:</p>
<table class="tbl" style="width: 100%;">
<thead>
<tr>
<td style="text-align: center;">
<p>Тип куков</p>
</td>
<td style="text-align: center;">
<p>Файл куки / Сервис</p>
</td>
<td style="text-align: center;">
<p>Назначение</p>
</td>
<td style="text-align: center;">
<p>Срок хранения</p>
</td>
</tr>
</thead>
<tbody>
<tr>
<td>
<p>необходимые</p>
</td>
<td>
<p>__Secure-SessionId</p>
</td>
<td>
<p>Этот файл куки сохраняет данные сеанса на время посещения веб-сайта пользователем для обеспечения корректной работы сайта</p>
</td>
<td>
<p>на время пользования сайтом (сессия)</p>
</td>
</tr>
<tr>
<td>
<p>необходимые</p>
</td>
<td>
<p>Poll</p>
</td>
<td>
<p>Этот файл куки сохраняет факт участия в опросе для предотвращения повторного участия в одном и том же опросе</p>
</td>
<td>
<p>не более года</p>
</td>
</tr>
<tr>
<td>
<p>функциональные</p>
</td>
<td>
<p>Google Translate*</p>
</td>
<td>
<p>Данный сервис устанавливает куки файлы для обеспечения сохранения выбора языка при переключении между страницами сайта и идентификации пользователя в сервисах Google</p>
</td>
<td>
<p>часть на время пользования сайтом, а остальные - не более года</p>
</td>
</tr>
<tr>
<td>
<p>функциональные</p>
</td>
<td>
<p>Яндекс.Переводчик*</p>
</td>
<td>
<p>Данный сервис устанавливает куки файлы для обеспечения сохранения выбора языка при переключении между страницами сайта и идентификации пользователя в сервисах Яндекса</p>
</td>
<td>
<p>часть на время пользования сайтом, а остальные - не более года</p>
</td>
</tr>
<tr>
<td>
<p>функциональные</p>
</td>
<td>
<p>Яндекс.Поиск*</p>
</td>
<td>
<p>Данный сервис устанавливает куки файлы для обеспечения работы поиска по сайту и идентификации пользователя в сервисах Яндекса.</p>
</td>
<td>
<p>часть на время пользования сайтом, а остальные - не более года</p>
</td>
</tr>
<tr>
<td>
<p>статистические</p>
</td>
<td>
<p>Яндекс.Метрика*</p>
</td>
<td>
<p>Данный сервис устанавливает куки файлы для сбора информации о поведении пользователей на сайте и идентификации пользователя в сервисах Яндекса.</p>
</td>
<td>
<p>часть на время пользования сайтом, а остальные - не более 2х лет</p>
</td>
</tr>
</tbody>
</table>
<p style="text-align: justify;">* - Названия и количество куков-файлов определяется данными сервисами самостоятельно и могут изменяться.</p>
<p style="text-align: justify;">4. В рамках обеспечения полноценного функционирования Сайта и повышения качества его работы к обработке куков-файлов могут допускаться следующие сторонние организации:</p>
<p style="text-align: justify;">Google Inc. (юридический адрес: 1600 Amphitheatre Parkway, Mountain View, CA 94043, США) с целью обеспечения сохранения выбора языка при переключении между страницами сайта Сайта и идентификации пользователя в сервисах Google;</p>
<p style="text-align: justify;">ООО «Яндекс» (юридический адрес: Российская Федерация, 119021, г. Москва, ул. Л. Толстого, 16) с целями:</p>
<ul style="text-align: justify;">
<li>обеспечения сохранения выбора языка при переключении между страницами сайта Сайта и идентификации пользователя в сервисах Яндекса;</li>
<li>обеспечения работы поиска по Сайту и идентификации пользователя в сервисах Яндекса;</li>
<li>сбора информации о поведении пользователей на Сайте и идентификации пользователя в сервисах Яндекса.</li>
</ul>
<p style="text-align: justify;">Указанным организациям на основании согласия пользователя Сайта может осуществляется трансграничная передача информации, собранной при помощи куков-файлов.</p>
<p style="text-align: justify;">При этом Google Inc. имеет юридический адрес в государстве США, на территории которого не обеспечивается надлежащий уровень защиты прав субъектов персональных данных. Перечень иностранных государств, на территории которых обеспечивается надлежащий уровень защиты прав субъектов персональных данных, определяется Национальным центром защиты персональных данных.</p>
<p style="text-align: justify;">5. Пользователи могут принять или отклонить все обрабатываемые на Сайтах куки, кроме необходимых.<br />Отключение функциональных куки может привести к ограничению пользователя в доступе к определенным функциональным возможностям Сайта.</p>
<p style="text-align: justify;">Отключение статистических куки не позволяет определять предпочтения пользователей Сайта, в том числе наиболее и наименее популярные страницы и принимать меры по совершенствованию работы Сайта исходя из предпочтений пользователей.</p>
<p style="text-align: justify;">6. Сайт сохраняет выбор пользователя о настройках куков-файлов в течение 1 (одного) года. По окончании этого периода Сайт вновь запросит у пользователя Сайта сделать выбор настроек куков-файлов.</p>
<p style="text-align: justify;">Вместе с тем пользователи вправе изменить свой выбор настроек куки (в том числе отозвать согласие) в любое время в интерфейсе Сайта путем нажатия кнопки "Настройка обработки cookie" <span class="cc-toggle" title="Настройка обработки cookie" data-cc="show-preferencesModal" aria-haspopup="dialog"> </span> размещенную в нижнем левом углу сайта.</p>
<p style="text-align: justify;">7. Помимо настроек куки на Сайте субъекты персональных данных могут принять или отклонить сбор всех или некоторых куки в настройках своего браузера.</p>
<p style="text-align: justify;">При этом некоторые браузеры позволяют посещать интернет-сайты в режиме ”инкогнито“, чтобы ограничить хранимый на компьютере объем информации и автоматически удалять сессионные куки. Кроме того, субъект персональных данных может удалить ранее сохраненные куки, выбрав соответствующую опцию в истории браузера.</p>
После публикации Политики в отношении обработки cookie Вам необходимо удалить квадратные скобки [«укажите название своей организации без квадратных скобок и без выделения желтым маркером!!»] и указать полное название своей организации!
Сделать ссылки на страницу сайта с данными документами, в подвале сайта (для примера, смотрим примеры ссылок в подвале сайта шаблонов шаблон1.веб-мастерская.бел, шаблон2.веб-мастерская.бел,..., шаблон9.веб-мастерская.бел), чаще всего это текстовый модуль "Контакты в подвале".
<br/><br/>
<a title="Политика в отношении обработки персональных данных" href="/деятельность/обработка-персональных-данных" rel="noopener"> Политика в отношении обработки персональных данных</a><br />
<a title="Политика в отношении обработки cookie" href="/деятельность/обработка-персональных-данных" rel="noopener">Политика в отношении обработки cookie</a>
<br /><br />
Настройка функционала
ВНИМАНИЕ ВАЖНО!
Если у Вас в админке сайта в модулях содержимое секции Обертка отличается от показанного в видеоролике, проверьте (исправьте) пожалуйста секцию Формат вывода (и наоборот).
Если название модулей вашего сайта отличается от показанных в обучающем видеоролике
- ищите у себя в админке сайта похожие!
Google Translate
<script type="text/plain" data-category="functionality" data-service="Google Translate">eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('6 7(a,b){n{4(2.9){3 c=2.9("o");c.p(b,f,f);a.q(c)}g{3 c=2.r();a.s(\'t\'+b,c)}}u(e){}}6 h(a){4(a.8)a=a.8;4(a==\'\')v;3 b=a.w(\'|\')[1];3 c;3 d=2.x(\'y\');z(3 i=0;i<d.5;i++)4(d[i].A==\'B-C-D\')c=d[i];4(2.j(\'k\')==E||2.j(\'k\').l.5==0||c.5==0||c.l.5==0){F(6(){h(a)},G)}g{c.8=b;7(c,\'m\');7(c,\'m\')}}',43,43,'||document|var|if|length|function|GTranslateFireEvent|value|createEvent||||||true|else|doGTranslate||getElementById|google_translate_element|innerHTML|change|try|HTMLEvents|initEvent|dispatchEvent|createEventObject|fireEvent|on|catch|return|split|getElementsByTagName|select|for|className|goog|te|combo|null|setTimeout|500'.split('|'),0,{}))
function googleTranslateElementInit2() { new google.translate.TranslateElement({pageLanguage: 'ru', autoDisplay: false}, 'google_translate_element');}
</script>
<script type="text/plain" data-category="functionality" data-service="Google Translate" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit2"></script>
<script type="text/plain" data-category="functionality" data-service="Google Translate">
$(document).ready(function() {
window.MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
var langAttrObserver = new MutationObserver(function(mutation) {
var lang = $('html').attr('lang');
if (lang) {
$('.lng_select a.active').removeClass('active');
$('.lng_select a[data-lang="' + lang + '"]').addClass('active');
}
//langAttrObserver.disconnect();
}).observe(document.querySelector('html'), {attributes: true,});
});
</script>
Яндекс.Переводчик
<script type="text/plain" data-category="functionality" data-service="Яндекс.Переводчик">
$(document).ready(function() {
var YaTranslate = {
default: 'ru',//язык по умолчанию
lang: null,
//langFirstVisit: 'en',//язык, на который переводим при первом посещении
form: '.ya_lng',
init: function(params) {
var t = this;
if (params !== undefined) {
if (params.hasOwnProperty('default')) { t.default = params.default;}
if (params.hasOwnProperty('lang')) { t.lang = params.lang;}
}
/*
if (yatranslate.langFirstVisit && !localStorage.getItem('yt-widget')) {
// Если установлен язык перевода для первого посещения и в localStorage нет yt-widget
yaTranslateSetLang(yatranslate.langFirstVisit);
}
/**/
//добавляем #ytWidget, если не найден:
if (!$('#ytWidget').length) {
$('<div id="ytWidget" style="display: none;"></div>').appendTo('body');
}
//подключаем скрипт yandex translate
let script = document.createElement('script');
script.onload = function () { console.log('yt script loaded');};
script.src = `https://translate.yandex.net/website-widget/v1/widget.js?widgetId=ytWidget&pageLang=`+ t.default + `&widgetTheme=light&autoMode=false`;
document.getElementsByTagName('head')[0].appendChild(script);
t.form = $(t.form);
//получаем и записываем язык, на который переводим:
t.lang = t.getCode();
t.setLang(t.lang);
//выделяем активную кнопку для соотв. языка
t.switchActive(t.lang);
//переключение языка по кнопкам [data-lang]
t.form.find('[data-lang]').click(function(e) {
var lng = $(this).attr('data-lang');
t.setLang(lng);
t.switchActive(lng);
window.location.reload();
});
},
setLang: function(lng) {
var t = this;
//записываем выбранный язык в localStorage объект yt-widget
localStorage.setItem('yt-widget', JSON.stringify({
lang: lng,
active: true,
}));
},
getCode: function() {
var t = this;
//получаем значение языка, на который переводим:
return (localStorage["yt-widget"] != undefined && JSON.parse(localStorage["yt-widget"]).lang != undefined) ? JSON.parse(localStorage["yt-widget"]).lang : t.default;
},
switchActive: function(lng) {
var t = this;
t.form.find('[data-lang]').removeClass('active');
t.form.find('[data-lang="' + lng + '"]').addClass('active');
},
}
//инициализация Яндекс-переводов (при наличии соотв. элемента):
if ($('.ya_lng').length) {
var lang = $('html').attr('lang');
YaTranslate.init({default: lang ? lang : 'ru',});
}
});
</script>
ВНИМАНИЕ! ВАЖНО!
На Вашем сайте должна быть настроен ЯндексПоиск по сайту, для этого у Вас должен быть почтовый аккаунт на ЯндексПочте и ранее Вы или другой специалист Вашей организации должны были подтвердить права на сайт (добавить мета-тег в настройки сайта) и изменить стандартный id кода поиска на Ваш.
Если Вы не выполняли данные операции и не в курсе текущей ситуации на Вашем сайте с ЯндексПоиском по сайту, то Вам сюда: https://youtu.be/HYpDco_mStg , а затем сюда https://youtu.be/Hiqre2z3c_8
Яндекс.Поиск (результаты)
<div id="ya-site-results" onclick="return {'tld': 'ru','language': 'ru','encoding': '','htmlcss': '1.x','updatehash': false}">
<p><span style="font-size: 150%; background-color: #ffff99;">Для просмотра результатов поиска необходимо разрешение на использование cookie сервисом Yandex.Поиск</span></p>
<p style="text-align: justify;">Вы можете изменить свой выбор настроек куки в любое время в интерфейсе Сайта путем нажатия кнопки "Настройка обработки cookie" <span class="cc-toggle" title="Настройка обработки cookie" data-cc="show-preferencesModal" aria-haspopup="dialog"> </span> размещенную в нижнем левом углу сайта.</p>
</div>
<script type="text/plain" data-category="functionality" data-service="Яндекс.Поиск">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0];s.type='text/javascript';s.async=true;s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Results.init();})})(window,document,'yandex_site_callbacks');</script>
Яндекс.Метрика (счетчик)
<script type="text/plain" data-category="analytics" data-service="Яндекс.Метрика">
Яндекс.Метрика (информер)
обертка до
<span class="yandex_informer" id="yaInformerWrapper"> <script type="text/plain" data-category="analytics" data-service="Яндекс.Метрика"> document.getElementById('yaInformerWrapper').innerHTML = `
обертка после
`; </script> </span>
И самое главное - добавить в Управление - Настройки и утилиты - Параметры сайта - Footer - Локальный:
<script type="module" src="/scripts/cookieconsent/loader.js"></script> <button type="button" id="cc-floating-toggle" data-cc="show-preferencesModal" title="Настройка обработки cookie"></button>
Проверка корректности работы функционала, а так же проверка юзабилити, в том числе перекрытия кнопки Вверх.
1. Проверяем работу функционала с помощью "Панели инструментов разработчика" - вызов в браузере (Chrome) через нажатие клавиши F12 на клавиатуре в верхнем ряду:
- в браузере открываем сайт
- жмем F12 или CTRL+SHIFT+I
- выбираем раздел Приложение (Application)
- Хранилище (Storage)
- Файлы cookie (Cookies)
- адрес Вашего сайта
необходимо что-бы при выборе "Отклонить все" в списке куков от имени Вашего сайта был только один куки файл - "__Secure-SessionId"
если при выборе "Отклонить все" в списке куков от имени Вашего сайта есть другие куки файлы кроме "__Secure-SessionId", то не факт что это ошибка настройки - возможно это "хвост" (оставшиеся, не удалившиеся куки) от времен до установки соответствующего функционала на Ваш сайт:
- очистите список куков файлов от имени Вашего сайта - кнопка "Удалить все файлы cookie" (Clear all cookies)
- обновите страницу сайта Ctrl+F5
- если теперь в списке куков от имени Вашего сайта есть только куки файл "__Secure-SessionId" - все OK!, но если теперь в списке куков от имени Вашего сайта по-прежнему есть другие куки файлы кроме "__Secure-SessionId" - миссия провалена (GOTO support).
2. Проверяем юзабилити "панели управления куками для посетителей сайта" и кнопки вызова настроек файлов куки:
- внешний вид панели (цвета, шрифты, ...) должен быть не хуже, чем на исходных шаблонах шаблон1.веб-мастерская.бел, шаблон2.веб-мастерская.бел,..., шаблон9.веб-мастерская.бел
- кнопка вызова настроек файлов куки не должна накладываться на кнопку "Вверх" (в style.css ищем селектор #scroll_up_button и у него в стилях свойство "left" меняем на "right").
Если после всех проделанных Вами работ на сайте остались проблемы - обращайтесь в техподдержку (при этом Вы должны сообщить нам номер вашей админки и интернет-адрес вашего сайта).