
Хак DLE Псевдо Онлайн является псевдо онлайн статусом. Выводит в отдельный блок всех авторизованных пользователей + общее их количество. Что означает псевдо? Дело в том что используется стандартное поле в движке DLE, которое будет обновляться раз 20-40 минит (в зависимости от настроек).
Основной плюс хака - используется минимальное кол-во запросов к базе, т.е. не создаёт нагрузку на вашу БД.
Хак дле для DLE Псевдо Онлайн
Разработчик: ShapeShifter (SavGroup_ru)
Инструкция:
1) Открыть файл
engine/modules/sitelogin.php
Найти:
if (!$_SESSION['member_lasttime']){ @session_register('member_lasttime'); $_SESSION['member_lasttime'] = $member_id['lastdate']; if (($member_id['lastdate'] + (3600 * 4)) < $_TIME) { $db->query("UPDATE LOW_PRIORITY " . USERPREFIX . "_users set lastdate='{$_TIME}' where user_id='$member_id[user_id]'"); }}
Заменить на:
//if (!$_SESSION['member_lasttime']){ @session_register('member_lasttime'); $_SESSION['member_lasttime'] = $member_id['lastdate']; if (($member_id['lastdate'] + 1800) < $_TIME) { $db->query("UPDATE LOW_PRIORITY " . USERPREFIX . "_users set lastdate='{$_TIME}' where user_id='$member_id[user_id]'"); } // }
1800 - это время через которое данные об последнем везите обновится, время в секундах, т.е. по умолчанию у нас 30 минут.
2) Открыть файл engine/init.php
Найти:
include_once ENGINE_DIR.'/moduli/sitelogin.php';
Добавьте после:
$end_online = time() + $config['date_adjust']*60; $start_online = $end_online - 1801; $user_online = "Сейчас на сайте:<br>"; $h=0; $db->query("SELECT name, lastdate, user_group FROM `". PREFIX . "_users` WHERE lastdate >= '$start_online' AND lastdate <= '$end_online' ORDER BY lastdate DESC"); while($row = $db->get_row()) { if ($config['allow_alt_url'] == "yes") $full_user = $config['http_home_url']."user/".urlencode($row['name']); else $full_user = $PHP_SELF."?subaction=userinfo&user=".urlencode($row['name']); $last_date = langdate( "H:i j F Y", $row['lastdate'] ); if ($row['user_group'] == 1) $online_name_user = "<a href="".$full_user.""><font color=red>".$row['name']."</font></a>"; elseif ($row['user_group'] == 2) $online_name_user = "<a href="".$full_user.""><font color=blue>".$row['name']."</font></a>"; elseif ($row['user_group'] == 3) $online_name_user = "<a href="".$full_user.""><font color=green>".$row['name']."</font></a>"; elseif ($row['user_group'] == 4) $online_name_user = "<a href="".$full_user."">".$row['name']."</font></a>"; else $online_name_user = ""; $h++; if ($h == "1") $user_online .= $online_name_user; else $user_online .= ", ".$online_name_user; } $user_online .= "<br><br>Всего на сайте: ".$h; $db->free();
1801 - опять же время в секундах как и выше, только здесь мы определяем с какого времени выводить пользователей. Т.е. дата последнего визита должна быть больше или равна
start_online но меньше или равна
end_online (текущее время).
3) Открыть файл index.php
Найти:
$tpl->load_template ( 'main.tpl' );
Добавить ниже:
$tpl->set('{user_online}', $user_online);
4) Открыть файл main.tpl (в папке вашего шаблона)
Создайте блок онлайна и добавьте в место вывода списка тег
{user_online}
Для вывода статуса в комментариях:
1) Открыть engine/modules/show.full.php
Найти:
reg_date, signature, foto,
Заменить на:
reg_date, signature, lastdate, foto,
2) Делаем тоже самое, что и в первом пункте в файле engine/modules/lastcomments.php
если у вас движок 8.2 и 9.2
3) Открыть engine/classes/comments.class.php
Найти:
else $tpl->set( '{foto}', "/templates/Default/images/noavatar.png" );
Добавить ниже:
$end_online = time() + $config['date_adjust']*60;$start_online = $end_online - 1801;if ($row['lastdate'] >= $start_online AND $row['lastdate']<= $end_online) $tpl->set( '{online_status}', "<font color=#0073cb>online</font>");else $tpl->set( '{online_status}', "<font color=#b20000>offline</font>");
4) Открыть comments.tpl (в папке вашего шаблона)
Добавить в нужное место:
{online_status}
P.S. В коде вывода блока (init.php) есть код для подстветки ников членов команды ID 1-3, если они вам не нужны, то удалите:
<font color=red>...</font><font color=blue>...</font><font color=green>...</font>
Установка ЗАКОНЧЕНА!
Рекомендуем «все для DataLife Engine» скачать хак псевдо онлайн для DLE