Модуль поиска по контенту сайта в зависимости от установленных пользователем куков 1.X

230
Коллеги. Сердечно поздравляю всех пользователей InstantCMS c народным праздником Победы. Желаю всем счастья, здоровья и процветания.
Пару месяцев назад я опубликовал запись с исправлением кукисов, которые никак не хотели работать на сборке v. 1.10.7.006 от 10 января 2019 г.
Кукисы я исправил, теперь пришел черед модуля, который эти кукисы, установленные пользователем, использует для поиска в контенте сайта.
Я не успел выпустить этот модуль к сборке Актуальная версия 1.10.7.007 от 05 мая 2019 года. Поэтому публикую сегодня.

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

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

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

Модуль и сопутствующие файлы.

Хочу сразу предупредить коллег, что просто залить модуль в сборки 006 или 007 не получиться. Мне пришлось переделать файлы
templates/_default_/template.php // Требуется обязательно смержить!!!!!!!
templates/_default_/cookies/cookie_types.php
templates/_default_/js/jquery.ihavecookies.js

В целом процесс управления пользователем своими куками ничем не изменился.

Как устанавливать модуль

Устанавливать модуль можно как на 006 сборку, так и на 007. Методика приведена ниже.

1. Обязательно сделать резервную копию сайта и бекап базы данных.
2. Распаковать архив в любое место.
3. Прочитать readme.txt
4. Смержить файл templates/_default_/template.php, находящийся в архиве, с одноименным файлом сайта.
5. Остальные файлы залить с заменой (кроме, естественно, readme.txt - он на сайте не нужен)
6. Выполнить sql-запрос, чтобы подключить модуль к сайту.
Код SQL:
  1. INSERT INTO `cms_modules` (`id`, `position`, `name`, `title`, `titles`, `is_external`, `content`, `ordering`, `showtitle`, `published`, `user`, `config`, `original`, `css_prefix`, `access_list`, `hidden_menu_ids`, `cache`, `cachetime`, `cacheint`, `template`, `is_strict_bind`, `is_strict_bind_hidden`, `author`, `version`) VALUES ('0', 'sidebar', 'Модуль поиска по сайту по кукам', 'Вам будет интересно', '---\r\nen:\r\nru:\r\n', '1', 'mod_what_show', '36', '1', '1', '0', '', '1', '', '', '', '0', '1', 'HOUR', 'module.tpl', '0', '0', 'stroller7@gmail.com', '1.0');
7. Зайти в админку и посмотреть, появился ли модуль. Он должен быть уже включен. Обязательно укажите в настройках, на каких страницах сайта выводить модуль.

Настройки модуля.

Модуль создавался в самом простом варианте, без админки. Поэтому никаких настроек, кроме настроек вывода на страницу, модуль не потребует. Может, позже, если сообщество будет настаивать, я сделаю более продвинутый модуль, ну а пока вот так....

Просьба к пользователям

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

Как скачать.

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

Скачать
Хак #2 "Добавление настройки приватности профиля - показывать профиль только назначенным группам" для v. 1.10.7.006 от 10 января 2019 г.
Комментарии (10)
abasia 9 мая 2019 в 22:29 +1
Спасибо за модуль. С Победой!!!
С праздником! Модуль работает?
abasia 10 мая 2019 в 14:53 0
Не понял его работу, в мозиле и опере выводится пустым, в хроме не выводится вообще
Видимо, модуль ничего не нашел. Вы файл templates\_default_\cookies\cookie_types.php под контент своего сайта отредактировали? Браузер от куков почистили?
Откройте файл модуля modules\mod_what_show\module.php и после строчки
Код PHP:
  1. $preferences = json_decode($_COOKIE['cookieControlPrefs'], 1);
наберите
Код PHP:
  1. echo '$preferences = '; print_r($preferences); echo '<br>';
Что выводит?
abasia 10 мая 2019 в 20:09 0
Файл под контент не редактировал, сделаю это позже, модуль выводит
вот вам и причина. модуль то ищет по базе слова preferens, analitics и marketing.
если у вас на сайте такого контента нет, значит будет вот такой результат.

отредактируйте файл по образцу
Код PHP:
  1. $cookie_types = array();
  2. $cookie_types[0] = array('type'=>'preferences', 'value'=>'Предпочтения', 'description'=>'Эти файлы cookies связаны с Вашими предпочтениями, например, цвет сайта, браузер и т.д.');
  3. $cookie_types[1] = array('type'=>'analytics', 'value'=>'Аналитика', 'description'=>'Эти файлы cookies имеют отношение к сервисам веб-аналитики. С помощью файлов анализируется информация о Вашем использовании нашего веб-сайта.');
  4. $cookie_types[2] = array('type'=>'marketing', 'value'=>'Маркетинг', 'description'=>'Эти файлы cookies имеют отношение к маркетингу, например, к информационным потокам, использованию общественных носителей, и т.п.');
  5. $cookie_types[3] = array('type'=>'cutters', 'value'=>'Катера', 'description'=>'Эти файлы позволят Вам найти на сайте описание всех катеров');
  6. $cookie_types[4] = array('type'=>'boats', 'value'=>'Лодки', 'description'=>'Эти файлы позволят Вам найти на сайте описание всех лодок');
  7. $cookie_types[5] = array('type'=>'sails', 'value'=>'Паруса', 'description'=>'Эти файлы позволят Вам найти на сайте описание парусов');
  8.  
Обратите внимание, по сравнению с вашим (старым) файлов в этом изменились значения type и value! Теперь type английские, а value - русские!!!!!
Еще после строчки
Код PHP:
  1. $answers = array_merge($blogs, $articles, $forums);
добавьте строку
Код PHP:
  1. if(!empty($answers)){ return false;}
Чтобы модуль не выводился, если ничего не нашел.

Я сейчас в архиве эту строчку добавлю и перезалью.
Извините, поторопился, строчка должна быть
Код PHP:
  1. if(empty($answers)){ return false;}
Прошу всех, кто взял у меня модуль, скачать его заново. В нем содержится изменение, внесенное после замечания abasia.