Доброго дня!
Как организовать "просмотренные материалы", т.е. в списке views добавить класс к тизеру уже просмотренной ноды дабы приглушить с помощью CSS?
Другой вариант. В блоке под нодой т.н. "похожие материалы" исключить вывод тех нод, которые юзер уже просмотрел.
Все осложняется еще и тем, что пользователи - анонимные.
Подскажите в какую сторону копать.
Комментарии
В сторону Cookies.
В сторону Session API
Как вариант - возможно, что-то получится сварганить на базе модуля recently_read
Ресентли рид как раз то, что нужно, у него есть интеграция с вьюс, надо только инвертировать фильтр
Кстати, куки тоже ничего, но много писать руками )
Ресендли - гуд. Спасибо за наводки. Еще подозрение, что придется отключить кэширование.
А вот так - можно не отключать.
Recently read работает через сессию, а не через куки. Если же хранить всё в куках, то интеграцию с вьюс придётся писать с нуля самому. Если же через js выпиливать из результатов вьюс лишнее - то это уже какой-то костыль, который сломается, дойдя до пагинации.
А что касается кэширования - достаточно не кэшировать всего один блок, ничего страшного от этого не произойдёт
А разве это не костыль? Что покажет вьюс, когда юзер прочтёт много материалов?
Костыль. Причем тот еще...
Что покажет Views - не знаю, нужно понимать его структуру. Может там просто блок материалов "За сегодня", который не нужно показывать если уже все видел.
Согласен, что костыль тот еще... Потому и интересуюсь вашим мнением по этому поводу. С блоком похожих материалов разобрался. Что касается самой views - список тизеров (не поля) с инфинити подгрузкой. Материалов там довольно много, на сегодня около 600-650. Разумеется, что за одну сессию все не прочесть.
Что если в сессию писать nid'ы, потом при загрузке проходить JS и дописывать слассы?
Можно и как-то так. Но зачем усложнять?
Но вам же подсказали вариант с recently read для views, как говорят нужно всего лишь изменить условие фильтра на обратное.
Более правильно - делать выборку из материалов еще не просмотренных.
Из кук или из сессии (которая все равно куками передается) - дело Ваше. Стоит только правильно настроить время их "жизни".
Можно написать несколько строк кода для контекстного фильтра по ID, чтоб тот исключал просмотренные пользователем ноды. Или свой хендлер для фильтрации...
Но кеша - не будет.