• Блог
  • [siteStatistics] ip, referer, user-agent

В новой версии сделаны небольшие, но приятные доработки. Начнём по порядку.

Поля ip, referer и user-agent

В таблице пользователей появились эти три поля. Лично мне особенно интересно поле referer. Видно откуда человек пришёл. Остальные два поля тоже пригодятся. По ним, например, можно вычислить дубли. Иногда, почему-то они появляются. У меня на сайте, если открыть главную страницу в хроме, то статистика почему-то задваивается. В других браузерах такой странности не наблюдается.


Другие доработки

Ещё для фильтрации пользователей добавлено 2 системные настройки:

  • stat.not_allowed_ip — список ip адресов через запятую, для которых статистика учитываться не будет.
  • stat.not_allowed_user_agents — то же, что и предыдущая настройка, только для юзер-агентов. Например, для отсечения ботов можно указать «bot,spider,slurp». Поиск идет через preg_match().

Я первую настройку использую для отсечения запросов с h3.modhost.pro (мой провайдер), который каждые 10 минут стучится на главную страницу для проверки статуса сайта.


В списке пользователей теперь есть возможность их удаления. При удалении будет предложено 2 варианта:

  1. Удалить пользователя и статистику его просмотров.
  2. Удалить пользователя, а статистику оставить.

В сниппете siteOnlineUsers добавлено 2 свойства:

  • fullMode — режим вывода информации о текущих пользователях — короткий (false) или полный (true).
  • tplItem — шаблон для вывода списка текущих пользователей (для полного режима). По-умолчанию, <p>[[+stat.fullname]]</p>

Короткий режим —

В полном режиме выводится поименный список пользователей. Имена берутся из поля fullname профиля.

Сортировка статей по количеству просмотров

Ну и напоследок приведу пример сортировки статей по количеству просмотров с использованием сниппета pdoResource из библиотеки pdoTools.

[[!pdoResources?
    &parents=`0`
    &limit=`0`
    &loadModels=`sitestatistics`
    &tpl=`@INLINE [[+id]]. [[+pagetitle]] - [[+views]]`
    &leftJoin=`{
        "Statistics": {
            "class": "PageStatistics",
            "on": "modResource.id = Statistics.rid"
        }
    }`
    &select=`{
        "modResource": "*",
        "Statistics": "IFNULL(SUM(views),0) as views"
    }`
    &groupby=`modResource.id`
    &sortby=`views`
]]

Тоже самое, только для фильтра mFilter2.

[[!mFilter2?
    &class=`msProduct`
    &element=`msProducts`
    &loadModels=`sitestatistics`
    &leftJoin=`{
        "Statistics":{"class":"PageStatistics","on":"msProduct.id=Statistics.rid"}
    }`
    &select=`{
        "msProduct":"*",
        "Statistics":"IFNULL(SUM(views),0) as views"
    }`
    &groupby=`msProduct.id`
    &sortby=`views`
]]
0   4615

Комментарии ()

  1. skarb 07 января 2018 # 0
    Здравствуйте, Сергей.
    Подскажите, пожалуйста, почему у некоторых посетителей сайта пустое значение в $_SESSION['siteStatistics']?
    1. Сергей Шлоков 07 января 2018 # 0
      То мне не ведомо. Если узнаете тайну, дайте знать.
    2. Nik 10 февраля 2023 # 0
      Установил последнюю версию siteStatistics 2.3.0-pl, все все работает просто отлично! Кроме учета online пользователей. Вывожу как описано в документации
      [[!siteOnlineUsers? &fullMode=`1`]]
      при этом виджет «Сейчас на сайте» не выводится, если ставлю &fullMode=`0`, то виджет показывается но количество гостей/пользователей всегда показывает = 0.
      Версия MODX Revolution 2.7.1
      PHP version 7.1.33
      Все сделал строго по инструкции, в системных настройках siteStatistics — включен учет посещений пользователей.
      Сергей подскажи пожалуйста в какую сторону копать??? Уж очень понравилось это дополнение, хочется чтобы все работало:q
      В логе пусто, никаких ошибок по дополнению нету
      1. Nik 13 февраля 2023 # 0
        Нашел еще одну проблемку, количество уникальных посещений ресурса накручивается с мобильного браузера Opera при каждом обновлении страницы. Эх, жаль…

        Вы должны авторизоваться, чтобы оставлять комментарии.

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