Вы здесь

Подсчет просмотров ноды во views

1

Друзья, по воле судьбы так вышло, что пришлось выводить одну ноду во вьюшке. Теперь нужно прикрутить статистику просмотров для этого типа нод, но проблема в том, что модуль Statistics, который идет из коробки, не считает статистику если нода отображается во вьюшке. По логике вещей все правильно, он и не должен ничего считать, потому что во вьюшке может отображаться не одна нода. Но мне именно ко одной вьюшке (а именно вьюшке одной ноды) нужно это прикрутить.

После попыток выяснил, что статистика увеличивается после вызова функции drupal_render(). Тогда придется тянуть в каком нибудь PHP поле целую ноду node_load'ом, и рендерить, а это совсем не нужное для меня дублирование данных и лишняя нагрузка.

Может, есть какие нибудь советы? Я слышал что то про AJAX в этом модуле, но нормальной инфы найти не могу.

Надеюсь что все понятно описал.

Версия Drupal: 
7.x
Категория: 
Node API
Связанные проекты: 
Views
Вопрос задан 04.06.2015 - 22:01

Ответы

3

У views выберите вывод не полями, а сущностью. Но в целом это неправильный подход. Нужно считать кол-во показов - навесьте небольшой js скриптик, который после document ready (или load вашего блока, или попадание блока в viewport, да что угодно в принципе) будет стучать google analytics / метрику - сэкономите много ресурсов.

Ответ дан 05.06.2015 - 00:17

Соглашусь. Лучше отказаться от модуля statistics и использовать сторонние решения типа аналитики. Нагрузка колоссальная, а если во вьюсах еще всё это будет дергаться и учитываться - еще больше.

Комментарий оставлен 05.06.2015 - 08:34
0

Напишу как сделал в итоге, хоть столько времени и прошло. На самом деле Views предназначен для вывода сущностей в виде списков, но из-за его удобства и контекстных фильтров, я использовал его также для вывода страницы одного материала. Разумеется модуль Statistics не работает с Views, так как не знает, что именно вы там выводите. Решение - это модуль Google Analityc Counter, который считает статистку страницы базируясь на URL.

Ответ дан 20.08.2016 - 12:05