siteStatistics - статистика сайта
- Основные возможности
- Системные настройки
- Перенос статистики из PageHits
- Ссылки
Компонент для учета просмотра и посещений страниц ресурсов. Альтернатива известного дополнения 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]]
.