Strict Standards: Resource ID#39 used as offset, casting to integer (39) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#41 used as offset, casting to integer (41) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#42 used as offset, casting to integer (42) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Мод: Кто сейчас просматривает раздел/тему?
ТвойWeb » » Моды, хаки, скины и дополнения » Мод: Кто сейчас просматривает раздел/тему?

Страниц (1): [1]
 

1. yura3d - 18 Июня, 2008 - 06:00:31 - перейти к сообщению
Когда-то давно я писал подобный мод для ExBB 1.9.1, сейчас решил адаптировать его для ExBB FM 1.0 Beta. Мод позволяет выводить список пользователей, просматривающих определённую тему в данный момент. Скорее всего Вы уже видели подобную фишку в других форумах, теперь это доступно и в ExBB.

Примеры работы мода (скрины):




Для установки мода нужно произвести следующие изменения
Открываем файл include/fm.class.php и находим строки:
CODE:
if ($show === TRUE) {
$this->_MembersOutput = implode ( ' » ', $output);
unset($output);
}
return;

И заменяем их на эти:
CODE:
if ($show === TRUE) {
$this->_MembersOutput = implode ( ' » ', $output);
unset($output);
}
return $onlinedata;

Далее открываем файл topic.php и находим строку:
CODE:
if ($fm->exbb['karma'] === TRUE) { $fm->_LoadModuleLang('karma');}

И прямо под ней вставляем код:
CODE:
// Кто сейчас просматривает тему?
// Mod was written by yura3d for ExBB FM 1.0 Beta
$onlinedata = $fm->_OnlineLog($fm->LANG['TopicSee'].' <a href="topic.php?forum='.$forum_id.'&topic='.$topic_id.'"><b>'.$topic['name'].'</b></a> - <a href="forums.php?forum='.$forum_id.'"><b>'.$forumname.'</b></a>',$privateID);
$guests = $hiddens = $members = 0; $showonline = array(); $mems = "";
foreach ($onlinedata as $id => $online) {
eregi("forum=([[:alnum:]]+)&topic=([[:alnum:]]+)", $online['in'], $where);
if (($where[1] == $forum_id) and ($where[2] == $topic_id)) {
if (!$online['id']) $guests++;
else {
if (($fm->exbb['visiblemode']) and (!empty($online['v']))) $hiddens++;
else {
$members++;
$showonline[$online['id']] = array("n" => $online['n'], "st" => $online['st']);
}
}
}
}
foreach ($showonline as $id => $online) {
$class = "";
if (array_key_exists($id, $allforums[$forum_id]['moderator'])) $class = ' class="moder"';
if ($online['st'] == "ad") $class = ' class="admin"';
if ($online['st'] == "sm") $class = ' class="supmoder"';
$mems .= ' &raquo; <a href="profile.php?action=show&member='.$id.'"'.$class.'>'.$online['n'].'</a>';
}
$total = $guests + $members + $hiddens;
$hiddens = ($fm->exbb['visiblemode']) ? sprintf($fm->LANG['hiddens'], $hiddens) : "";
$showonline = sprintf($fm->LANG['topic_online'], $total, $guests, $members, $hiddens, $mems);
// Кто сейчас просматривает тему

Открываем файл language/russian/lang_front_forums.php и вставляем в него строки:
CODE:
$this->LANG['hiddens'] = ', скрытых: %d';
$this->LANG['topic_online'] = 'Сейчас эту тему просматривают: %d (гостей: %d, зарегистрированных: %d%s)%s';

Открываем файл templates/InvisionExBB/topic_body.tpl и находим строки:
CODE:
<tr>
<td>
{$topic_data}
</td>
</tr>
<tr>
<td class="postlinksbar" align="right"><strong>{$options}</strong></td>
</tr>

И прямо под ними вставляем:
CODE:
<tr>
<td class="row2" style="padding:6px">{$showonline}</td>
</tr>

На этом всё, мод установлен. В отличие от более ранних реализаций данный мод корректно работает с приватными форумами, в нём была добавлена совместимость со скрытым режимом пребывания на форуме.

Вы также можете сделать вывод списка пользователей, просматривающих определённый раздел (или читающих тему в нём). Подробности здесь
2. sergey44945 - 18 Июня, 2008 - 07:09:15 - перейти к сообщению
спасибо все гуд протестил Улыбка
3. yura3d - 18 Июня, 2008 - 07:21:50 - перейти к сообщению
Нашёл небольшой баг (он связан с цветом ника пользователя). Для исправлениия в файле topic.php найти код:
CODE:
if ($online['st'] == "ad") $class = ' class="admin"';
if ($online['st'] == "sm") $class = ' class="supmoder"';
if (array_key_exists($id, $allforums[$forum_id]['moderator'])) $class = ' class="moder"';

И заменить этим:
CODE:
if (array_key_exists($id, $allforums[$forum_id]['moderator'])) $class = ' class="moder"';
if ($online['st'] == "ad") $class = ' class="admin"';
if ($online['st'] == "sm") $class = ' class="supmoder"';

В первом сообщении этот прокол уже исправлен
4. Pauk - 18 Июня, 2008 - 08:23:11 - перейти к сообщению
Привет yura3d, а для 0,15 подойдет?
5. yura3d - 19 Июня, 2008 - 17:03:20 - перейти к сообщению
Решил немного дополнить мод. Теперь также есть возможность выводить список пользователей, просматривающих определённый раздел (или читающих тему в нём). Для этого открываем файл forums.php и находим строку:
CODE:
$fm->_OnlineLog($fm->LANG['ViewForum']." <a href=\"forums.php?forum={$forum_id}\"><b>".$allforums[$forum_id]['name'].'</b></a>',$privateID);

И заменяем её этим кодом:
CODE:
// Кто сейчас просматривает форум?
// Mod was written by yura3d for ExBB FM 1.0 Beta
$onlinedata = $fm->_OnlineLog($fm->LANG['ViewForum']." <a href=\"forums.php?forum={$forum_id}\"><b>".$allforums[$forum_id]['name'].'</b></a>',$privateID);
$guests = $hiddens = $members = 0; $showonline = array(); $mems = "";
foreach ($onlinedata as $id => $online) {
eregi("forum=([[:alnum:]]+)", $online['in'], $where);
if ($where[1] == $forum_id) {
if (!$online['id']) $guests++;
else {
if (($fm->exbb['visiblemode']) and (!empty($online['v']))) $hiddens++;
else {
$members++;
$showonline[$online['id']] = array("n" => $online['n'], "st" => $online['st']);
}
}
}
}
foreach ($showonline as $id => $online) {
$class = "";
if (array_key_exists($id, $allforums[$forum_id]['moderator'])) $class = ' class="moder"';
if ($online['st'] == "ad") $class = ' class="admin"';
if ($online['st'] == "sm") $class = ' class="supmoder"';
$mems .= ' &raquo; <a href="profile.php?action=show&member='.$id.'"'.$class.'>'.$online['n'].'</a>';
}
$total = $guests + $members + $hiddens;
$hiddens = ($fm->exbb['visiblemode']) ? sprintf($fm->LANG['hiddens'], $hiddens) : "";
$showonline = sprintf($fm->LANG['forum_online'], $total, $guests, $members, $hiddens, $mems);
// Кто сейчас просматривает форум

Далее открываем файл templates/InvisionExBB/forum_body.tpl и находим код:
CODE:
<tr>
<td class="darkrow2" style="padding:6px" colspan="6">&nbsp;</td>
</tr>

И прямо под ним вставляем код:
CODE:
<tr>
<td class="row2" style="padding:6px" colspan="6">{$showonline}</td>
</tr>

И конечно главное не забыть вставить языковую переменную в файл language/russian/lang_front_forums.php:
CODE:
$this->LANG['forum_online'] = 'Сейчас этот форум просматривают: %d (гостей: %d, зарегистрированных: %d%s)%s';

На этом установку можно считать завершённой Улыбка

Pauk пишет:
Привет yura3d, а для 0,15 подойдет?

Нет
6. WHITE_DRAGON - 20 Июня, 2008 - 02:45:47 - перейти к сообщению
yura3d

Спасибо!!! Улыбка Улыбка Улыбка Классный мод!!! Улыбка Улыбка Улыбка

PC: Я смотрю Ты неплохо разбираешся в php; не мог бы ты подсказать в каких файлах надо править чтобы добавить вторуюю домашнюю страничку в инфе пользователя; и помочь мне с новостями - очень надо: http://tvoyweb.ru/forums/topic.p...5&topic=1252
7. Ninguno - 27 Июня, 2008 - 06:54:33 - перейти к сообщению
yura3d пишет:
Pauk пишет:
Привет yura3d, а для 0,15 подойдет?

Нет
Обидно Недовольство, огорчение
8. defenderyk - 04 Сентября, 2008 - 16:43:26 - перейти к сообщению
хм...чтож я его сразу то не заметил) спс.

а нельзя тогда сразу сделать, чтобы выводить, на главной к каждому разделу: сколько человек просматривают раздел или тему?
9. yura3d - 05 Сентября, 2008 - 14:27:12 - перейти к сообщению
defenderyk пишет:
а нельзя тогда сразу сделать, чтобы выводить, на главной к каждому разделу: сколько человек просматривают раздел или тему?

Попробуем. Для начала открываем файл include/fm.class.php, находим строку:
CODE:
var $_FilePointers = array();

И прямо под ней вставляем:
CODE:
var $gde = array();

Затем в этом же файле ищем строку:
CODE:
if ($show === TRUE) {

И прямо под ней вставляем:
CODE:
eregi("forum=([[:alnum:]]+)", $info['in'], $gde);
if ($gde = intval($gde[1])) {
if (!isset($this->gde[$gde])) $this->gde[$gde] = 0;
$this->gde[$gde]++;
}

Теперь мучаем index.php. Находим строку:
CODE:
$fm->_OnlineLog($fm->LANG['BoardMain'],FALSE,TRUE);

Вырезаем её из того места, где она стояла, и ставим её прямо под строкой:
CODE:
$news_data = GetNews();

Далее в этом же файле находим строку:
CODE:
$forumname = '<a href="forums.php?forum='.$id.'">'.$forum['name'].'</a>';

И прямо под ней вставляем:
CODE:
$gde = (isset($fm->gde[$id])) ? "(".sprintf($fm->LANG['Viewing'], $fm->gde[$id]).")" : "";

Открываем файл language/russian/lang_front_all.php и вставляем в него языковую переменную:
CODE:
$this->LANG['Viewing'] = 'Просматривают: %d';

Открываем файл templates/ваш_скин/board_data.tpl, находим переменную $forumname и добавляем к ней переменную $gde:
CODE:
<b>{$forumname}</b> {$gde}


На этом всё
10. defenderyk - 05 Сентября, 2008 - 16:48:24 - перейти к сообщению
СПС) ты что наизусть уже движок выучил Растерялся Хотя наверно, если переделываешь на мускул...

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 1.8626]     [ Gzipped ]