форум vBSupport.ru > vBulletin > Вопрос — Ответ
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
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 04: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-25-2013 at 12:37 AM.
 
 
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 06: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 02:52 PM.


Powered by vBulletin® Version 3.0.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.