Итак, моё решение:
Проблема состоит в том, что среди готей учитываются боты. Следовательно, нужно научится их отлавливать или...
позаимствовать результат такого умения у специализированных сервисов
Я пошёл по второму пути. Современные сервисы статистики, как мы знаем, отлично справляются с отсеиванием ботов.
У liveinternet есть счётчик (который самый большой), который показывание хосты "на линии" - этот как раз посетители за последние 15 минут.
Хотел было сначала вставлять такой счётчик на сайт, потом его парсить)))
Потом узнал, что по кой-какой ссылке можно вообще получить картинку статистики для любого сайта (даже если она закрыта)))) Хотел парсить эту картинку..
Позже наткнулся и на ссылку, по которой можно получить статистику уже даже в тектовом виде - то, что надо!
Осталось только пропарсить страницу по этой ссылке и вставить себе в модуль.
Сделал это на уровне шаблона для модуля - вполнекорректное решение, при обновлении Joomla модуль продолжит работу.
Итак, скопировал php файл шаблона модуля в templates/папку_своего_шаблона/html/mod_whosonline/default.php и соответственно переназвал его rsn-hack.php )))
Потом в настройках модуля выбираем шаблон этот, естественно)
А в шаблоне перед тем как идёт:
<?php if ($showmode == 0 || $showmode == 2) : ?>
<?php $guest = JText::plural('MOD_WHOSONLINE_GUESTS', $count['guest']); ?>
<?php $member = JText::plural('MOD_WHOSONLINE_MEMBERS', $count['user']); ?>
Вставляем:
<?php
$ch9 = curl_init ();
curl_setopt ($ch9 , CURLOPT_URL , "http://counter.yadro.ru/values?site=ваш-сайт.ру");
curl_setopt ($ch9 , CURLOPT_RETURNTRANSFER , 1 );
$content9 = curl_exec($ch9);
curl_close($ch9);
preg_match_all("|LI_online_vis = (.*);|sei", $content9, $matches, PREG_PATTERN_ORDER);
$count['guest'] = $matches[1][0] - $count['user']; ?>
<?php if ($count['guest'] < 0):
$count['guest'] = 0;
endif; ?>
ваш-сайт.ру, естественно, заменяем на Ваш домен, к оторому подключена стаистика liveinternetгде:
- первая часть это парсинг числа гостей. Мне кажется это не самый лучший способ, но я сам не программист, сделал, порывшись на форумах, вроде работает)) Если кто поправит в лучший вид, буду только благодарен!!
и тут же из числа общих посетителей вычитаем пользователей (liveinternet же их не различает)
- а вторая часть это проверка, что если пользователей может оказаться больше, чем всего посетителей (liveinternet считает с небольшим опозданием и может стоять разное время сессий), то, чтобы не показывало "минус", а в крайнем случае 0 гостей.
В итоге получаем отличную работу модуля. Проверено.
Небольшие недостатки:
1. Работает только если на сайте есть стаистика liveinternet (но она у многих из рунета есть). Хотя по большому счёту можно аналогично связать и сдругими сервисами статистики
2. Время жизни сессии должно быть желательно 15 минут, чтобы оно соответствовало настройкам liveinternet - ну, чтобы правильно высчитывались общие посетители минус авторизованные пользователи = гости
3. Подсчёт гостей чуть чуть отстаёт. По моим наблюдениям секунд на 10 где-то. Но это терпимо, думаю. Особенно по сравнению с недостатком, когда в стандартном варинате отображались сотни фальшивых гостей))
4. Если вдруг liveinternet не будет работать, то модуль будет показывать 0 гостей. В идеале бы хотел в этом случае показывать "на сайте есть гости".
Вот так. Если что, прикладываю файл шаблона, токо не забудьте в нём свой сайт прописать, вместо ваш-сайт.ру. Можно было, конечно, и модуль сделать с таким параметром, но пока не охото)
Отзывы принимаются
[вложение удалено Администратором]