Просмотренные ноды или сессии для анонимов

Аватар пользователя lipinart

Доброго дня!
Как организовать "просмотренные материалы", т.е. в списке views добавить класс к тизеру уже просмотренной ноды дабы приглушить с помощью CSS?

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

Тип материала:
Версия Drupal:
0 Thanks

Комментарии

Аватар пользователя OldWarrior
OldWarrior 1 год назад

В сторону  Session API

Как вариант - возможно, что-то получится сварганить на базе модуля  recently_read

Аватар пользователя gun_dose
gun_dose 1 год назад

Ресентли рид как раз то, что нужно, у него есть интеграция с вьюс, надо только инвертировать фильтр

Аватар пользователя OldWarrior
OldWarrior 1 год назад

Кстати, куки тоже ничего, но много писать руками )

Аватар пользователя lipinart
lipinart 1 год назад

Ресендли - гуд. Спасибо за наводки. Еще подозрение, что придется отключить кэширование.

Аватар пользователя gun_dose
gun_dose 1 год назад

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

А что касается кэширования - достаточно не кэшировать всего один блок, ничего страшного от этого не произойдёт

Аватар пользователя bumble
bumble 1 год назад
1
lipinart написал:
в списке views добавить класс к тизеру уже просмотренной ноды дабы приглушить с помощью CSS
Аватар пользователя gun_dose
gun_dose 1 год назад

А разве это не костыль? Что покажет вьюс, когда юзер прочтёт много материалов?

Аватар пользователя bumble
bumble 1 год назад
1

Костыль. Причем тот еще...
Что покажет Views - не знаю, нужно понимать его структуру. Может там просто блок материалов "За сегодня", который не нужно показывать если уже все видел.

Аватар пользователя lipinart
lipinart 1 год назад

Согласен, что костыль тот еще... Потому и интересуюсь вашим мнением по этому поводу. С блоком похожих материалов разобрался. Что касается самой views - список тизеров (не поля) с инфинити подгрузкой. Материалов там довольно много, на сегодня около 600-650. Разумеется, что за одну сессию все не прочесть.
Что если в сессию писать nid'ы, потом при загрузке проходить JS и дописывать слассы?

Аватар пользователя OldWarrior
OldWarrior 1 год назад

Можно и как-то так. Но зачем усложнять?
Но вам же подсказали вариант с recently read для views, как говорят нужно всего лишь изменить условие фильтра на обратное.

Аватар пользователя bumble
bumble 1 год назад

Более правильно - делать выборку из материалов еще не просмотренных.

Из кук или из сессии (которая все равно куками передается) - дело Ваше. Стоит только правильно настроить время их "жизни".

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