Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Посетителей на сайте

Посетителей на сайте
, by

Подскажите пожалуйста. вот у меня есть сайт http://island.in.ua/

в правой колонке находится блок "Сейчас на сайте". в этом блоке показывается сколько пользователей онлайн.

Причем пользователей онлайн он считает только зарегистрированных на сайте.

Меня интересует такой вопрос, а как сделать так, что бы выводило значение сколько на сайте гостей в данный момент.

в настройках этого модуля такого нет. смотрите картинку.

1 answer
votes: 447
Answer

Попробуйте этот код вставить в отдельный блок, но только с фильтром PHP

 

= :timestamp AND s.uid > 0", array(':timestamp' => $interval))->fetchField(); $output=""; $max_users = variable_get('user_block_max_list_count', 10); if ($authenticated_count && $max_users) { $output.="

Registered Users

"; $items = db_query_range('SELECT u.uid, u.name, MAX(s.timestamp) AS max_timestamp FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.timestamp >= :interval AND s.uid > 0 GROUP BY u.uid, u.name ORDER BY max_timestamp DESC', 0, $max_users, array(':interval' => $interval))->fetchAll(); $output .= theme('user_list', array('users' => $items)); } $guest_count = db_query("SELECT COUNT(DISTINCT s.hostname) FROM {sessions} s WHERE s.timestamp >= :timestamp", array(':timestamp' => $interval))->fetchField(); $sData=array(); $gData=array(); if ($guest_count && $max_users) { $items = db_query_range('SELECT DISTINCT s.hostname, MAX(s.timestamp) AS max_timestamp FROM {sessions} s WHERE s.timestamp >= :interval ORDER BY max_timestamp DESC', 0, 10000000, array(':interval' => $interval))->fetchAll(); $i=0; for ($i=0;$ihostname; } $ips=array_unique($ips); foreach ($ips as $ip){ $host=preg_replace('/[^a-zA-Z\.]/', '', gethostbyaddr($ip)); if ($host=="...") $host="Unknown Hostname"; $spider=0; foreach ($spiders as $spider){ if (strpos($host, $spider)!==false){ $spider=1; break; } } if ($spider==1){ $sData[]=array('ip'=>$ip, 'host'=>$host); }else{ $gData[]=array('ip'=>$ip, 'host'=>$host); } } } if (isset($gData) && count($gData)>0){ $output.="

Guests

"; $i=0; foreach ($gData as $d){ $output.="

".$d['host']."

"; $output.="
    "; $output.="
  • ".$d['ip']."
  • "; $loc=unserialize(file_get_contents('http://www.geoplugin.net/php.gp?ip='.$d['ip'])); if ($loc['geoplugin_city'].$loc['geoplugin_region']!=''){ $output.="
  • ".$loc['geoplugin_city'].", ".$loc['geoplugin_region']."
  • "; } if ($loc['geoplugin_countryName']!=''){ $output.="
  • ".$loc['geoplugin_countryName']."
  • "; } $output.="
"; if ($i>$max_users){break;} $i++; } } if (isset($sData) && count($sData)>0){ $output.="

Spiders

"; $i=0; foreach ($sData as $d){ $output.="

".$d['host']."

"; $output.="
    "; $output.="
  • ".$d['ip']."
  • "; $output.="
"; if ($i>$max_users){break;} $i++; } } return $output; }
?>


больше информации можно найти в гугле по этому запросу

http://bit.ly/rVTFgm


Спасибо за ответ. Чтото получилось. Блок выводит список зарегистрированных пользователей онлайн. и список гостей. только вот со списком гостей не все понятно. мне кажется что он не всех отображает а только одного гостя. я себе в контакте седал рекламы своего сайта и следил за переходами по банеру на мой сайт. очень много людей входило но больше чем одного гостя не показала.