Модуль "Вы недавно смотрели..."
Модуль может отображать ноды как списком ссылок, так и тизерами.
Для интернет-магазинов и разных каталогов часто необходим блок "вы недавно смотрели...".
Это позволяет выбирать товары, не открывая масс-вкладки, не нажимая "вперед-назад".
Вот решил вечерком написать простой модуль, реализующий подобный функционал.
Встречайте, модуль session_recent_nodes.
Модуль крайне простой, не создающий таблиц, и (почти) не обращающийся к БД. Создает блок, в котором выводятся ссылки на последние просмотренные юзером ноды.
Установка:
Качаем, распаковываем, включаем в админке.
Настройка:
Заходим в блоки, видим блок "Recent nodes". Повесьте блок в нужный регион. Зайдите в настройки блока. Помимо основных полей, форма имеет несколько дополнительных, определяющих поведение блока:
Node types:
Поставьте галки у тех типов материала, которые необходимо выводить (например, "товар", "резюме" и т.д.).
Limit:
Максимальное количество ссылок в списке.
Reset list
Если отметить эту галку, то при сохранении блока старый список будет сброшен.
После этого достаточно походить по нодам, наблюдая, как блок заполняется ссылками.
Как это работает.
Я считаю, что информацию о том, что смотрел юзер, не следует хранить в БД, т.к. срок ее жизни небольшой, а актуальность высока.
Поэтому, как подсказывает название модуля, эта информация хранится в сессии пользователя.
Функционал срабатывает в два этапа:
- При просмотре полной ноды (хук nodeapi, $op = 'view', тизер = ложь) происходит проверка, следует ли отслеживать тип этой ноды.
Если да, то идет проверка на дублирование по nid, а затем -- добавление ссылки в массив в сессии.
И, наконец, предотвращается "распухание" этого массива с помощью среза.
- При отрисовке блока возвращается список ссылок.
Сам модуль не далает запросов к БД, разве что заносит в {variables} 2 переменные.
Модуль можно скачать тут