[siteStatistics] ip, referer и user-agent
В новой версии сделаны небольшие, но приятные доработки. Начнём по порядку.
Реферер и юзер-агент на всегда полностью помещаются в поле. Чтобы не мучиться с размерами колонок посмотреть их можно по двойному клику.
В списке пользователей теперь есть возможность их удаления. При удалении будет предложено 2 варианта:
В сниппете siteOnlineUsers добавлено 2 свойства:
В полном режиме выводится поименный список пользователей. Имена берутся из поля fullname профиля.
Тоже самое, только для фильтра mFilter2.
Полная документация.
П.С. Теперь в списке пользователей периодически наблюдаю попытки подбора адреса админки, так как при переадресации на страницу 404 в поле реферер пишется набранный адрес. Прикольно.
Поля ip, referer и user-agent
В таблице пользователей появились эти три поля. Лично мне особенно интересно поле referer. Видно откуда человек пришёл. Остальные два поля тоже пригодятся. По ним, например, можно вычислить дубли. Иногда, почему-то они появляются. У меня на сайте, если открыть главную страницу в хроме, то статистика почему-то задваивается. В других браузерах такой странности не наблюдается.Реферер и юзер-агент на всегда полностью помещаются в поле. Чтобы не мучиться с размерами колонок посмотреть их можно по двойному клику.
Другие доработки
Ещё для фильтрации пользователей добавлено 2 системные настройки:- stat.not_allowed_ip — список ip адресов через запятую, для которых статистика учитываться не будет.
- stat.not_allowed_user_agents — то же, что и предыдущая настройка, только для юзер-агентов. Например, для отсечения ботов можно указать «bot,spider,slurp». Поиск идет через preg_match().
В списке пользователей теперь есть возможность их удаления. При удалении будет предложено 2 варианта:
- Удалить пользователя и статистику его просмотров.
- Удалить пользователя, а статистику оставить.
В сниппете siteOnlineUsers добавлено 2 свойства:
- fullMode — режим вывода информации о текущих пользователях — короткий (false) или полный (true).
- tplItem — шаблон для вывода списка текущих пользователей (для полного режима). По-умолчанию, [[+stat.fullname]]
В полном режиме выводится поименный список пользователей. Имена берутся из поля 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`
]]
Полная документация.
П.С. Теперь в списке пользователей периодически наблюдаю попытки подбора адреса админки, так как при переадресации на страницу 404 в поле реферер пишется набранный адрес. Прикольно.
Поблагодарить автора
Отправить деньги
Комментарии: 34
Спасибо! Теперь знаю и какие роботы постоянно тусуются и что их интересует, т.е. в ЯМетрике то этого нет, а иногда полезно знать. Например, как часто и когда Яндекс новости читают предназначенный для них feed, сколько висит постоянно «читателей» на общем RSS и многое другое.
Было бы здорово группировать результаты по parents и иметь возможность фильтровать их с определенной даты. К примеру, вывести общее количество просмотров всех страниц, у которых parents=1 и дата отсчета статистики с 29.07.2016
Подскажите, как вывести статистику по определенному пользователю за определенный период? На фронте.
Как-то так
[[!pdoUsers?
&tpl=`@INLINE <p>[[+username]] - [[+views]].</p>`
&loadModels=`sitestatistics`
&innerJoin=`{
"UserStat":{"class":"UserStatistics","on":"modUser.id=UserStat.uid"},
"PageStat":{"class":"PageStatistics","on":"UserStat.user_key=PageStat.user_key"}
}`
&select=`{
"PageStat": "IFNULL(SUM(PageStat.views),0) as views"
}`
&groupby=`UserStat.uid`
&where=`["UserStat.uid = 1 AND PageStat.date BETWEEN '2016-01-01' and '2016-06-31' "]`
]]
В параметре where указывается id пользователя и период.
Спасибо!
Снимаю галочки с показа некоторых столбцов в бэкенде. Но при обновлении страницы они все же остаются. Можно ли как-нибудь «запоминать» это?
Наверно можно.
Этого не планируется в следующих версиях?
Если разберусь, прикручу.
Еще вопрос. Как открыть доступ для других пользователей к статистике в бэкенде?
- list_statistics
- remove_statistics
В следующей версии добавлю политики. А пока можно в процессорах закомментировать переменную $permission.
Вообще, я хотел бы дать доступ только одному пользователю из группы Users и, естестественно, оставить для админа. Можно ли это сделать сейчас каким-нибудь костылем? А в новой версии уже настроить политику.
Посмотреть в процессорах права и добавить их в систему в «Настройке доступа». А потом назначить эти права пользователю.
Помогите настроить доступ Пользователю группы Manager. Где что прописать?
Насколько Вы близко общаетесь с MODX? Знаете что такое политики доступа?
Да, знаю. Какие параметры должны быть установлены?
Спасибо. Все работает.
Не могу понять. Не работает «stat.not_allowed_user_agents». Нужно писать туда «bot,spider,slurp» или полную запись для каждого бота вида «Mozilla/5.0 (compatible; SemrushBot/2~bl; +http://www.semrush.com/bot.html)»?
«bot,spider,slurp»
Почему тогда в «Онлайн» и в «Пользователи» постоянно тусуются боты? :)
Боюсь, разочарую, но несмотря на годы практики мне так и не открылся дар телепатии.
Ну это понятно.
Я к тому, что может ещё где какие доп. настройки надо делать?
Стоит MODX Revo 2.6.1. После установки плагина кеш чистил. На страницах выводит статистику, в админке показывает, но вот ботов игнорить отказывается.
Я к тому, что может ещё где какие доп. настройки надо делать?
Стоит MODX Revo 2.6.1. После установки плагина кеш чистил. На страницах выводит статистику, в админке показывает, но вот ботов игнорить отказывается.
Что указано в настройке? Какие юзер-агенты у ботов?
В настройке поставил, то что написано в инструкции: bot,spider,slurp
В админке в «Онлайн» вижу:
— Mozilla/5.0 (compatible; YandexAccessibilityBot/3.0; +http://yandex.com/bots)
— Mozilla/5.0 (compatible; SemrushBot/2~bl; +http://www.semrush.com/bot.html)
— Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
— Mozilla/5.0 (compatible; DotBot/1.1; www.opensiteexplorer.org/dotbot, help@moz.com)
и т.д.
Ещё вопрос. Эта настройка не учитывает статистику только для показа в админке или на сайте количество посещений будет тоже без ботов учитываться?
В админке в «Онлайн» вижу:
— Mozilla/5.0 (compatible; YandexAccessibilityBot/3.0; +http://yandex.com/bots)
— Mozilla/5.0 (compatible; SemrushBot/2~bl; +http://www.semrush.com/bot.html)
— Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
— Mozilla/5.0 (compatible; DotBot/1.1; www.opensiteexplorer.org/dotbot, help@moz.com)
и т.д.
Ещё вопрос. Эта настройка не учитывает статистику только для показа в админке или на сайте количество посещений будет тоже без ботов учитываться?
Так в админке они берутся из таблиц статистики. Боты отсекаются в плагине.Попробуйте подебажить. У меня кроме RSS ридеров ни один бот не пролазит.
Заглянул в лог. А там беда.
(ERROR @ /.../core/cache/includes/elements/modplugin/18.include.cache.php: 9) PHP warning: preg_match(): Unknown modifier '2'
[2018-10-05 21:37:02]
Вот такие записи каждые 1-4 минуты, начиная с даты установки плагина.
(ERROR @ /.../core/cache/includes/elements/modplugin/18.include.cache.php: 9) PHP warning: preg_match(): Unknown modifier '2'
[2018-10-05 21:37:02]
Вот такие записи каждые 1-4 минуты, начиная с даты установки плагина.
Судя по всему в системной настройке ботов есть слеш.
Спасибо за компонент!
Есть вопрос. Возможно ли отфильтровать данные по диапозонам ip адресов?
Например есть массив с диапозоннами [«31.173.80.0/21»,«85.26.232.0/22»].
Как получить статистику например увидеть на каких страницах были клиенты?
Есть вопрос. Возможно ли отфильтровать данные по диапозонам ip адресов?
Например есть массив с диапозоннами [«31.173.80.0/21»,«85.26.232.0/22»].
Как получить статистику например увидеть на каких страницах были клиенты?
Есть вопрос. Возможно ли отфильтровать данные по диапозонам ip адресов?siteStatistics ведёт статистику. А вот анализом придётся заняться самому. Можно через pdoResources.
Как получить статистику например увидеть на каких страницах были клиенты?Открываете список пользователей и кликаете на кнопку «Статистика по ресурсам».
Подскажите где находится функция которая определяет ip адрес клиента?
Потому что свой ip я не нахожу хотя сижу онлайн на сайте. Возможно из-за того что сайт работает через cloudflare неправильно определяются ip.
Потому что свой ip я не нахожу хотя сижу онлайн на сайте. Возможно из-за того что сайт работает через cloudflare неправильно определяются ip.
Тут.
Если я перепешу фунцию в этом файле, то при обновлении она опять перепишется?
function getUsetIP(){
$ip = $_SERVER['REMOTE_ADDR'];
if ( !empty( $_SERVER["HTTP_CF_CONNECTING_IP"])){
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
}elseif( !empty($_SERVER['HTTP_X_REAL_IP'])){
$ip = $_SERVER['HTTP_X_REAL_IP'];
}elseif( !empty($_SERVER['HTTP_CLIENT_IP'])){
$ip = $_SERVER['HTTP_CLIENT_IP'];
}elseif( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
$commapos = strrpos( $ip , ',' );
$ip = trim( substr( $ip , $commapos ? $commapos + 1 : 0 ));
}
return $ip;
}
Офкоз.
Создайте плагин OnHandleRequest с вышеописанным кодом, а найденный ip засуньте в $_SERVER['REMOTE_ADDR']. Делов то.
Создайте плагин OnHandleRequest с вышеописанным кодом, а найденный ip засуньте в $_SERVER['REMOTE_ADDR']. Делов то.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.