siteStatistics - статистика сайта

Компонент для учета просмотра и посещений страниц ресурсов. Альтернатива известного дополнения HitsPage, но с гораздо большими возможностями. Учитываются не только просмотры, но и уникальные посещения. А в админке можно посмотреть статистику как по ресурсам в разрезе периодов — день, месяц, год, так и сайта в целом.

Основные возможности

Подсчёт просмотров ресурсов и посещений ведётся в плагине. А для вывода этой информации на странице сайта предназначены сниппеты siteStatistics и siteOnlineUsers.

Сниппет siteStatistics

Он позволяет вывести статистику не только ресурса, но и сайта в целом. Для этого у сниппета есть параметр mode, принимающий 2 значения - page и site.

[[!siteStatistics? &mode=`site`]]

Режим page отвечает за статистику страницы (ресурса), а режим site, соответственно, за статистику всего сайта. По умолчанию указан режим page.

Режим статистики страницы

Сниппет в этом режиме показывает количество посещений или просмотров конкретного ресурса. Указываем в шаблоне или чанке

// Показывает количество просмотров
[[!siteStatistics]]
или так
//Показывает количество посещений
[[!siteStatistics? &show=`users`]]

Если нужно вывести статистику для конкретной страницы, то используйте параметр resource, в котором нужно указать id этой страницы.

Еще важный параметр — countby. Он указывает период, за который нужно показать статистику. Принимает следующие значения:

  • '' (пустое значение) — Показывает полную статистику без ограничений по периодам.
  • «day» — Показывает данные за день. Как в Яндекс.Метрике.
  • «month» — Показывает данные за месяц.
  • «year» — Показывает данные за год.

Работает в паре с параметром date, который определяет дату для сбора статистики. Если date не указан, то берутся текущие дата/месяц/год соответственно. В зависимости от параметра countby формат даты различается: для «day» — «YYYY-mm-dd», для «month» — «YYYY-mm», для «year» — «YYYY».

// Выводит количество просмотров текущего ресурса за 10 января 2016 года
[[!siteStatistics? &countby=`day` &date=`2016-01-10`]]
// Выводит количество просмотров текущего ресурса за январь 2016 года
[[!siteStatistics? &countby=`month` &date=`2016-01`]]
// Выводит количество посещений текущего ресурса за 2016 год
[[!siteStatistics? &show=`users` &countby=`year` &date=`2016`]]

Если нужно вывести количество уникальных посещений ресурса, то используйте параметр show. Он принимает 2 значения — views и users. Если указать последний, то выведется количество уникальных посещений.

Для вывода статистики в произвольных местах используйте параметр toPlaceholders. В этом случае данные о просмотрах и посещениях сохраняются в плейсхолдерах [[+stat.views]] и [[+stat.users]] соответственно. Их можно вставить в нужных местах разметки в шаблоне или чанке.

[[!siteStatistics? &toPlaceholders=`1`]]
<div>Просмотры: [[+stat.views]]</div>
<div>Посещения: [[+stat.users]]</div>

Режим статистики сайта

В этом режиме показывается статистика всего сайта. За этот режим отвечает параметр mode. Вставляем вызов сниппета в футере

// Дневная статистика
[[!siteStatistics? &mode=`site` &countby=`day`]]

и получаем вот такой блок

Что-то это напоминает :) Нужно поменять дизайн — меняем шаблон, указанный в параметре tpl.

Учет online пользователей

Для этого предназначен отдельный сниппет siteOnlineUsers, который выводит информацию о пользователях, находящихся в данный момент на сайте. Информация может выводится в коротком и развернутом виде. В первом случае это выглядит так - вставляем вызов сниппета в нужно месте

[[!siteOnlineUsers]]

На сайте увидим следующее

Чтобы вывести более подробный список пользователей, нужно указать соответствующий параметр

[[!siteOnlineUsers? &fullMode=`1`]]

Сниппет выведет список пользователей поимённо, а также общее количество гостей.

Этот сниппет будет работать, если в системных настройках включен учет посещений пользователей.

Дополнительные возможности

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

Системные настройки

Ключ По-умолчанию Описание
stat.count_online_users true Регистрирует пользователей, посещающих сайт. Становится доступен учет online пользователей.
stat.enable_statistics true Включает ведение статистики сайта.
stat.frontend_css {assets_url}components/sitestatistics/css/web/style.css Путь к файлу со стилями. Если оставить пустым, то загрузки не будет.
stat.online_time 15 Время (в минутах), по истечении которого будет считаться, что пользователь ушел.
stat.not_allowed_ip Ip адреса через запятую, для который не нужно учитывать статистику.
stat.not_allowed_user_agents Список юзер-агентов через запятую, для которых не нужно учитывать статистику. Например, юзер-агенты ботов - bot,spider,slurp. Чтобы отсечь пользователей с пустым юзер-агентом, нужно указать "empty".
stat.show_tab_in_resource_form true Показать вкладку статистики визитов пользователей на странице редактирования ресурса.

Перенос статистики из PageHits

Для тех, у кого установлен HitsPage, предлагаю скрипт для переноса данных о просмотрах в siteStatistics. Его можно выполнить или в отдельном файле, или в сниппете. Я для этого использовал Console.

Задача не особо сложная, но есть одна тонкость. В HitsPage количество просмотров сохраняется в ресурсе в поле properties в виде одного единственного числа. А в siteStatistics учет ведется в разрезе каждого дня. Поэтому данные из HitsPage должны быть перенесены в указанный день. Можно за точку отсчета взять начало года.

Также нужно указать пользователя, потому что в siteStatistics просмотры привязаны к пользователю. Желательно указать пользователя, статистика для которого вам не важна. Например, администратора с id = 1.

Если ресурсов очень много, то можно использовать поэтапный перенос через указание limit и offset.

Теперь можно выполнить скрипт (на всяких случай сделайте backup базы, чисто для успокоения) и спокойно заменить вызов [[!HitsPage]] на [[!siteStatistics]].

Выделите опечатку и нажмите Ctrl + Enter, чтобы отправить сообщение об ошибке.