форум vBSupport.ru > vBulletin > Вопрос — Ответ
  • »
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
 
 
 
 
busyava
Продвинутый
 
busyava's Avatar
Default вывод "Кто на форуме" на другую страницу
1

перенес из Мега популярных вопросов" тк не думаю, что вопрос таковым является. А так же по мере нахождения, частично мною, решения проблемы я понял, что решения этого вопроса - не так просто, как казалось на первый взгляд..


суть такова - хочу сделать на созданной мною странице, пункт "кто онлайн" - как на главной, и просто копия нижней части кода Forumhome ничего не дает, вернее дает только текст и все, без цифирек и статистики,
код беру от начала закомментированного блока:

<!-- what's going on box --> (для тех, кто не включил в админке метки-комментарии: скопировал всю нижнюю часть forumhome)

и до конца - до footera

В результате получается что фразы есть, а наполненности нет:
Quote:
Тем: , сообщений: , Пользователи:
Приветствуем нового пользователя,
хотя код вставляю весь (и он достаточно обширный)

но даже не весь текст проявляется отсутствует такие строчки, как:
Quote:
Присутствуют: x (x пользователей и x гостей)
Показать находящихся на форуме
Рекорд одновременного пребывания x, это было Сегодня в xx:xx.

Активных пользователей за последние 24 часа/часов: xx (пользователей - xx; гостей - xx)
------------

кажется я начал догадываться почему просто копирование кода "не пашет"....:
скорее всего надо помимо шаблона править страницу, которую я создал, и думается мне, править путем переноса каких то строчек из index.php
сама созданная страница выглядит примерно так:


PHP Code:
<?php

// ####################### Установка среды PHP ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### Определение важных констант #######################
define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''test'); // измените это в зависимости от названия файла

// ################### Кеширование шаблонов и данных ######################
// get special phrase groups
$phrasegroups = array(

);

// получение специальных шаблонов с данными с базы
$specialtemplates = array(
     
);

// кеширование шаблонов, исрользуемых всеми действиями
$globaltemplates = array(
    
'TEST',
);

// кеширование шаблонов, исрользуемых специфическими действиями
$actiontemplates = array(

);

// ######################### Получение системы ############################
require_once('./global.php');

// ##################################################  #####################
// ######################## НАЧАЛО ОСНОВНОГО СКРИПТА ############################
// ##################################################  #####################

$navbits = array();
$navbits[$parent] = 'Test Page';

$navbits construct_navbits($navbits);
eval(
'$navbar = "' fetch_template('navbar') . '";');
eval(
'print_output("' fetch_template('TEST') . '");');

?>
что туда нужно прописать такого, чтобы на ней отразились "Кто на форуме" ? (но не ссылка, а именно список кто в сети)


Да, это оно, пару строчек получилось активировать, но не все, буду очень благодарен если кто нибудь напишет, как все же - все активировать (- то есть появились цифры)
и впереди еще один момент, без которого вся затея - безсмысленна.. нужно будет туда ajax кнопку поставить "Обновить" с хака [Ajax]Who is online.


по сути нужен этот блок:

Quote:
-----------
"кто на форуме" (обновить)
-----------
Присутствуют: x (x пользователей и xx гостей)
Рекорд одновременного пребывания xx, это было Сегодня в xx:xx.

пользователь1,пользователь2 и т.д.
, и кнопка обновить (ajax). и все, а информация о том когда было больше всего народу не нужна, и когда у кого день рождения - не нужна

Last edited by busyava : 06-11-2012 at 03:04 AM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
YURSHAT
Coder
 
YURSHAT's Avatar
Default
2

с AJAX'ом извимни, сам, времени нет

Last edited by YURSHAT : 05-24-2013 at 11:37 PM.
 
 
SMak044
Эксперт
 
SMak044's Avatar
Default
1

Quote:
Originally Posted by busyava View Post
кажется я начал догадываться почему просто копирование кода "не пашет"....:
скорее всего надо помимо шаблона править страницу, которую я создал, и думается мне, править путем переноса каких то строчек из index.php
Обрати внимание на часть кода от
PHP Code:
// ### LOGGED IN USERS ################################################# 
до
PHP Code:
// ### GET FORUMS & MODERATOR iCACHES ######################## 
С ajax тут все довольно просто, тебе необходимо выполнить httprequest и выполнить тот же код, но в другом файле и вывести результат в div, который предварительно надо бы вставить в твой шаблон.
 
 
busyava
Продвинутый
 
busyava's Avatar
Default
0

помогло полное бездумное копирование - а отдельные участки кода приводят к белому экрану
Quote:
Originally Posted by SMak044 View Post
С ajax тут все довольно просто, тебе необходимо выполнить httprequest и выполнить тот же код, но в другом файле и вывести результат в div, который предварительно надо бы вставить в твой шаблон.
можно поподробнее? что такое httprequest - какой нибудь запрос? как он выполняется/где?
 
 
SMak044
Эксперт
 
SMak044's Avatar
Default
1

busyava,
Это javascript http://www.nbsp.ru/articles/2005/01/...tprequest.html
 
 
busyava
Продвинутый
 
busyava's Avatar
Default
0

это для меня сложно..

вот, что нашел в html коде странице index.php, и я думаю, что где то тут ключ:

это в head:
PHP Code:
<!-- BEGIN TEMPLATEawio_js -->
<
script type="text/javascript">
<!--
vBulletin.events.systemInit.subscribe(function(){online.req();online.req2()});online={req:function(){fetch_object("whoisonline").innerHTML='<img src="images/misc/progress.gif" />';YAHOO.util.Connect.asyncRequest("POST","index.php?do=rqawio",{success:this.show,failure:vBulletin_AJAX_Error_Handler,timeout:vB_Default_Timeout})},show:function(b){fetch_object("whoisonline").innerHTML=b.responseText},req2:function(){fetch_object("whoisonline2").innerHTML='<img src="images/misc/progress.gif" />';YAHOO.util.Connect.asyncRequest("POST","index.php?do=rqawio2",{success:this.show2,failure:vBulletin_AJAX_Error_Handler,timeout:vB_Default_Timeout})},show2:function(b){fetch_object("whoisonline2").innerHTML=b.responseText}};cautoref=setInterval("online.req(), online.req2()",1000*60);
// -->
</script>
<!-- END TEMPLATE: awio_js --> 
но почему он закомментирован?
может чего то подправить надо в скрипте? к примеру строчки типа: ,"index.php?do=rqawio" ?
а выполнить скрипт, как я понял нужно через div?

-раскомментировал, index заменил на свою страницу (условно "test"), то есть "index.php?do=rqawio" = "test.php?do=rqawio" - не робит =(


прошу прощения за свои "топорные" решения вопроса..

busyava добавил 11.06.2012 в 14:53
сместил обсуждение по хаку

busyava добавил 11.06.2012 в 17:18
Quote:
Originally Posted by SMak044 View Post
Обрати внимание на часть кода от
PHP Code:
// ### LOGGED IN USERS ################################################# 
до
PHP Code:
// ### GET FORUMS & MODERATOR iCACHES ######################## 
С ajax тут все довольно просто, тебе необходимо выполнить httprequest и выполнить тот же код, но в другом файле и вывести результат в div, который предварительно надо бы вставить в твой шаблон.
PHP Code:
<?php

// ####################### Установка среды PHP ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### Определение важных констант #######################
define('NO_REGISTER_GLOBALS'1);
define('THIS_SCRIPT''TEST'); // измените это в зависимости от названия файла

// ################### Кеширование шаблонов и данных ######################
// get special phrase groups
$phrasegroups = array(
);

// получение специальных шаблонов с данными с базы
$specialtemplates = array(
    
'maxloggedin',  
);

// кеширование шаблонов, исрользуемых всеми действиями
$globaltemplates = array(
    
'TEST',
);

// кеширование шаблонов, исрользуемых специфическими действиями
$actiontemplates = array(

);

// ######################### Получение системы ############################
require_once('./global.php');
require_once(
DIR '/includes/functions_bigthree.php');
// ##################################################  #####################
// ######################## НАЧАЛО ОСНОВНОГО СКРИПТА ############################
// ##################################################  #####################


$today vbdate('Y-m-d'TIMENOWfalsefalse);

// ### LOGGED IN USERS #################################################
$activeusers '';
if ((
$vbulletin->options['displayloggedin'] == OR $vbulletin->options['displayloggedin'] == OR ($vbulletin->options['displayloggedin'] > AND $vbulletin->userinfo['userid'])) AND !$show['search_engine'])
{
    
$datecut TIMENOW $vbulletin->options['cookietimeout'];
    
$numbervisible 0;
    
$numberregistered 0;
    
$numberguest 0;

    
$hook_query_fields $hook_query_joins $hook_query_where '';
    (
$hook vBulletinHook::fetch_hook('forumhome_loggedinuser_query')) ? eval($hook) : false;

    
$forumusers $db->query_read_slave("
        SELECT
            user.username, (user.options & " 
$vbulletin->bf_misc_useroptions['invisible'] . ") AS invisible, user.usergroupid,
            session.userid, session.inforum, session.lastactivity, session.badlocation,
             IF(user.displaygroupid=0, user.usergroupid, user.displaygroupid) AS displaygroupid, infractiongroupid
            
$hook_query_fields
        FROM " 
TABLE_PREFIX "session AS session
        LEFT JOIN " 
TABLE_PREFIX "user AS user ON(user.userid = session.userid)
        
$hook_query_joins
        WHERE session.lastactivity > 
$datecut
            
$hook_query_where
        " 
iif($vbulletin->options['displayloggedin'] == OR $vbulletin->options['displayloggedin'] == 3"ORDER BY username ASC") . "
    "
);

    if (
$vbulletin->userinfo['userid'])
    {
        
// fakes the user being online for an initial page view of index.php
        
$vbulletin->userinfo['joingroupid'] = iif($vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['displaygroupid'], $vbulletin->userinfo['usergroupid']);
        
$userinfos = array
        (
            
$vbulletin->userinfo['userid'] => array
            (
                
'userid'            =>& $vbulletin->userinfo['userid'],
                
'username'          =>& $vbulletin->userinfo['username'],
                
'invisible'         =>& $vbulletin->userinfo['invisible'],
                
'inforum'           => 0,
                
'lastactivity'      => TIMENOW,
                
'usergroupid'       =>& $vbulletin->userinfo['usergroupid'],
                
'displaygroupid'    =>& $vbulletin->userinfo['displaygroupid'],
                
'infractiongroupid' =>& $vbulletin->userinfo['infractiongroupid'],
            )
        );
    }
    else
    {
        
$userinfos = array();
    }
    
$inforum = array();

    while (
$loggedin $db->fetch_array($forumusers))
    {
        
$userid $loggedin['userid'];
        if (!
$userid)
        {    
// Guest
            
$numberguest++;
            if (!
$loggedin['badlocation'])
            {
                
$inforum["$loggedin[inforum]"]++;
            }
        }
        else if (empty(
$userinfos["$userid"]) OR ($userinfos["$userid"]['lastactivity'] < $loggedin['lastactivity']))
        {
            
$userinfos["$userid"] = $loggedin;
        }
    }

    if (!
$vbulletin->userinfo['userid'] AND $numberguest == 0)
    {
        
$numberguest++;
    }

    foreach (
$userinfos AS $userid => $loggedin)
    {
        
$numberregistered++;
        if (
$userid != $vbulletin->userinfo['userid'] AND !$loggedin['badlocation'])
        {
            
$inforum["$loggedin[inforum]"]++;
        }
        
fetch_musername($loggedin);

        (
$hook vBulletinHook::fetch_hook('forumhome_loggedinuser')) ? eval($hook) : false;

        if (
fetch_online_status($loggedin))
        {
            
$numbervisible++;
            
$show['comma_leader'] = ($activeusers != '');
            eval(
'$activeusers .= "' fetch_template('forumhome_loggedinuser') . '";');
        }
    }

    
// memory saving
    
unset($userinfos$loggedin);

    
$db->free_result($forumusers);

    
$totalonline $numberregistered $numberguest;
    
$numberinvisible $numberregistered $numbervisible;

    
// ### MAX LOGGEDIN USERS ################################
    
if (inTESTal($vbulletin->maxloggedin['maxonline']) <= $totalonline)
    {
        
$vbulletin->maxloggedin['maxonline'] = $totalonline;
        
$vbulletin->maxloggedin['maxonlinedate'] = TIMENOW;
        
build_datastore('maxloggedin'serialize($vbulletin->maxloggedin), 1);
    }

    
$recordusers vb_number_format($vbulletin->maxloggedin['maxonline']);
    
$recorddate vbdate($vbulletin->options['dateformat'], $vbulletin->maxloggedin['maxonlinedate'], true);
    
$recordtime vbdate($vbulletin->options['timeformat'], $vbulletin->maxloggedin['maxonlinedate']);

    
$show['loggedinusers'] = true;
}
else
{
    
$show['loggedinusers'] = false;
}


// ### ALL DONE! SPIT OUT THE HTML AND LET'S GET OUTTA HERE... ###
($hook vBulletinHook::fetch_hook('forumhome_complete')) ? eval($hook) : false;



$navbits = array();
$navbits[$parent] = 'тестовая страница';

$navbits construct_navbits($navbits);
eval(
'$navbar = "' fetch_template('navbar') . '";');
eval(
'print_output("' fetch_template('TEST') . '");');
вот конечный код, который получился и который работает (только для списка "Кто на форуме"). Не факт, что там лишнего кода нет, но постарался максимально полно вырезать не нужные элементы. (Напомню образец кода брал на index.php)

Last edited by busyava : 06-11-2012 at 05:18 PM. Reason: Добавлено сообщение
 
 
kerk
k0t
 
kerk's Avatar
Default
1

Quote:
Originally Posted by busyava View Post
if (inTESTal($vbulletin->maxloggedin['maxonline']) <= $totalonline)
а что это за функция такая inTESTal?
 
 
YURSHAT
Coder
 
YURSHAT's Avatar
Default
1

Quote:
Originally Posted by kerk View Post
а что это за функция такая inTESTal?
Это далнейшая модификации intval

busyava, я вам дал пример без лишнего кода, то есть хуков и прочего. Ну да ладно....

ЗЫ. Там должно быть
PHP Code:
if (intval($vbulletin->maxloggedin['maxonline']) <= $totalonline
вместо
PHP Code:
if (inTESTal($vbulletin->maxloggedin['maxonline']) <= $totalonline
 
 
busyava
Продвинутый
 
busyava's Avatar
Default
0

не сразу врубился с функцией, да просто изначально везде стояло не TEST а TV, ну я его запихнул в нотпад++ и на замену TV -> TEST (зачем такие подробности на форуме) вот и получилось, как сказал YURSHAT,
Quote:
Originally Posted by YURSHAT View Post
далнейшая модификации intval
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 03:31 AM.


Powered by vBulletin® Version Random
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Loading...