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

Поля 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   946     2

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

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

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

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