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

Поля 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`
    ]]
    
    29 апреля 2016, 07:30   1082     2

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

    1. skarb 07 января 2018, 20:24 # 0
      Здравствуйте, Сергей.
      Подскажите, пожалуйста, почему у некоторых посетителей сайта пустое значение в $_SESSION['siteStatistics']?
      1. Сергей Шлоков 07 января 2018, 23:52 # 0
        То мне не ведомо. Если узнаете тайну, дайте знать.

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

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