Описание: Расширенная on-line статистика |
Поиск в теме | Версия для печати |
yura3d |
Отправлено: 18 Июня, 2008 - 06:00:31
|
Super Member
Покинул форум
Сообщений всего: 624
Дата рег-ции: Июль 2007
Откуда: Минск, Беларусь
Карма 17
|
Когда-то давно я писал подобный мод для 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 .= ' » <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>
На этом всё, мод установлен. В отличие от более ранних реализаций данный мод корректно работает с приватными форумами, в нём была добавлена совместимость со скрытым режимом пребывания на форуме.
Вы также можете сделать вывод списка пользователей, просматривающих определённый раздел (или читающих тему в нём). Подробности здесь |
|
|
yura3d |
Отправлено: 18 Июня, 2008 - 07:21:50
|
Super Member
Покинул форум
Сообщений всего: 624
Дата рег-ции: Июль 2007
Откуда: Минск, Беларусь
Карма 17
|
Нашёл небольшой баг (он связан с цветом ника пользователя). Для исправлениия в файле 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"';
В первом сообщении этот прокол уже исправлен |
|
|
yura3d |
Отправлено: 19 Июня, 2008 - 17:03:20
|
Super Member
Покинул форум
Сообщений всего: 624
Дата рег-ции: Июль 2007
Откуда: Минск, Беларусь
Карма 17
|
Решил немного дополнить мод. Теперь также есть возможность выводить список пользователей, просматривающих определённый раздел (или читающих тему в нём). Для этого открываем файл 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 .= ' » <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"> </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 подойдет?
Нет |
|
|
yura3d |
Отправлено: 05 Сентября, 2008 - 14:27:12
|
Super Member
Покинул форум
Сообщений всего: 624
Дата рег-ции: Июль 2007
Откуда: Минск, Беларусь
Карма 17
|
defenderyk пишет:а нельзя тогда сразу сделать, чтобы выводить, на главной к каждому разделу: сколько человек просматривают раздел или тему?
Попробуем. Для начала открываем файл include/fm.class.php, находим строку:
CODE:var $_FilePointers = 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}
На этом всё |
|
|
|
Поиск в теме | Версия для печати |
Страниц (1): [1] |
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0) |
« Моды, хаки, скины и дополнения » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|