Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года 1.X

356
Данный хак исправляет ошибку с куками, присутствующий в 1.10.7.006 от 10 января 2019 года.

Обнаружение проблемы

Скачав себе обозначенный релиз и поставив его на хостинг, я обнаружил красивое всплывающее окно, предупреждающее о использовании сайтом куков и предлагающее модифицировать куки самому пользователю.
Идея очень хорошая....но к, сожалению, не работает. Нажимай не нажимай на кнопки "Модифицировать куки" и "Согласен" - окно все равно появляется каждый раз, когда заходишь на сайт и ходишь по страницам. Это раздражает.

Постановка задачи

Задачу я себе поставил простейшую - разобраться, как что работает, исправить, заодно вынести регулировки куков в админку сайта, чтобы владелец мог этот процесс регулировать.

Состав хака

Исправленые файлы:
templates/_default_/template.php
templates/_default_/js/jquery.ihavecookies.js
admin/applets/config.php
languages/ru/admin/applets/applet_config.php

Добавленный файл
templates/_default_/cookies/cookie_types.php

Как применить хак

1. Снимите резервную копию. Хак не затрагивает базу, поэтому дамп можно не снимать.
2. Если вы уверены, что не вносили в указанные файлы исправлений, залейте эти файлы в корень сайта с заменой. В противном случае перестрахуйтесь - откройте представленные файлы программой Merge вместе с коробочной версией, чтобы увидеть и внести изменения.
3. Сделайте настройки куков (об этом смотрите ниже).

Как выглядит админка сайта после применения хака

Зайдите в админку сайта, выберите "Настройки" -> "Настройки сайта"
Как видите, появилась новая вкладка "Кукисы"

Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года


Зайдите в эту вкладку. По умолчанию куки выключены (точнее, в конфиге пока отсутствуют элементы управления куками). Выбирайте "Включить" и нажмите кнопку "Сохранить", чтобы добавить в конфиг новые элементы - этого момента всплывающее окно куков появится на сайте.

Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года


После включения куков у вас появятся еще две настройки:

Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года

Это:
"Время жизни куков" - можете выбрать в выпадающем списке значение от одной минуты до одного года.
"Задержка появления всплывающего окна " - от одной секунды до одной минуты.
Сделав настройки, не забудьте нажать на кнопку "Сохранить".

Теперь надо настроить чекбоксы всплывающего окна.

Настройка чекбоксов

.
Еще одна настройка содержится в файле templates/_default_/cookies/cookie_types.php. Это чекбоксы всплывающего окна. Файл уже содержит пример в виде массива.
Массив состоит из строк, каждая строка есть массив из трех элементов - type, value, description.
Это и есть данные для отображения чекбоксов всплывающего окна. Каждая строка - это один чекбокс. Не рекомендую менять структуру массива и/или названия этих элементов (если не хотите чудес).
Вы можете редактировать значения элементов, если не устраивают представленные в примере.
Кроме того, можно добавлять (или убирать) строки массива. Чтобы было столько строк, сколько вам нужно - всплывающее окно автоматически изменит вид.

Как пользоваться всплывающим окном

Я изменил текст всплывающего окна с инструкцией пользователю. По-моему, там теперь все ясно. Если пользователь хочет модифицировать куки, пусть жмет на кнопку "Модифицировать куки"

Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года

Окно слегка изменит вид, показав чекбоксы ( в соотвествии с файлом чекбоксов cookie_types.php).
Пусть пользователь установит или снимет чекбоксы, перед интересующими его темами, а затем нажмет на кнопку "Согласен"
Исправление ошибки с куками в версии 1.10.7.006 от 10 января 2019 года

Куки пропишутся в браузер пользователя и будут там, либо пока не истечет срок их действия, либо пока пользователь не устроит чистку кэша своего браузера.

Для чего вся эта байда?

А фиг знает))) Однако программистам, желающим использовать фишку модифицируемых куков, куки доступны в любом месте сайта. Достаточно в нужное место вставить строчку
Код PHP:
  1. echo 'cookieControlPrefs => '; print_r($_COOKIE['cookieControlPrefs']);
Мы получим строчку вроде
Код PHP:
  1. cookieControlPrefs => ["preferences","cutters","boats","sails"]
Это перечисление значений value массива из файла cookie_types.php, которые выбрал пользователь. Обращаю внимание, что значение этой строчки для каждого пользователя будет индивидуальным.

Думаю, любой программер сообразит, что делать с этими данными, после того, как распарсит указанную строчку. Можно устроить поиск по сайту. Можно организовать вывод новостей для данного пользователя так, чтобы сперва выводились новости, которые заинтересуют именно этого посетителя.
Короче, говоря, дерзайте. Код вам в руки)).

Как скачать хак

.
Из моего профиля даром, то есть бесплатно.
Скачать архив

Удачи в сайтостроении!
Утилита "Harvester" | Хак "Добавление настройки приватности профиля - показывать профиль только назначенным группам" для v. 1.10.7.006 от 10 января 2019 г.
Комментарии (6)
abasia 12 апреля 2019 в 13:18 +2
Спасибо за хак, заморочились Вы однако)))
Кирилл Эдуардович (Странник) 12 апреля 2019 в 13:20 +2
Это вам спасибо за доброе слово)
Андрей 12 апреля 2019 в 18:15 +1
Кирилл, на высшем уровне! Респект и велкам в сборку :)
однозначно хак там будет!
Спасибо!
Юрий 12 апреля 2019 в 19:33 +2
ВЫ не человек, вы ЧЕЛОВЕЧИЩЕ!
Спасибо!
Сообщаю, что мной написан модуль, использующий модификацию куков. Почитать описание модуля и скачать его можно в этой статье.

Очень важно!
Для модуля пришлось изменить структуру файла чекбоксов и переписать файл управления templates/_default_/js/jquery.ihavecookies.js.
Архив модуля уже содержит эти исправленные файлы. Файл шаблона templates/_default_/template.php требуется смержить (я оттуда выкинул ненужные строчки), остальные файлы залить в корень с заменой.

Однако, чтобы модуль заработал, требуется очистить браузер от старых куков.