Выводим статус пользователя в комментариях в DLE
Насколько мне известно, в DataLife Engine отсутствует возможность вывода статуса пользователя в комментариях. А это своего рода полезная, я бы даже сказал, важная информация об авторе того или иного комментария.
Согласитесь, куда приятнее вести длинную беседу с человеком, зная, что он сейчас находится на сайте, нежели отсутствует на нем?
Для того чтобы вам добавить функцию отображения статуса пользователя в комментариях, сделайте следующее.
1. Подключитесь к вашему сайту по FTP.
2. Откройте файл show.full.php в папке /engine/modules/. В нем найдите одну строку, содержащую:
reg_date, signature
Найденную часть замените на:
reg_date, signature, lastdate
после чего сохраните изменения в файле и отправьте его обратно на сайт.
3. Далее откройте файл comments.class.php в папке /engine/classes/. В нем найдите строку:
else $tpl->set( '{ip}', '' );
и сразу после нее вставьте:
// Статус пользователя в комментариях
if($row["lastdate"] > (time() - 180)) {
$tpl->set("{status}", "Online");
} else {
$tpl->set("{status}", "Offline");
}
Сохраняете файл и также отправляете его обратно на сайт.
4. Затем открываете файл engine.php в папке /engine/. В нем, сразу после информации о файле (почти в самый верх), вы вставляете:
// Обновление времени последнего посещения пользователя
if($is_logged) {
if($member_id["lastdate"] < (time() - 180)) {
$db->query("UPDATE ".USERPREFIX."_users SET lastdate = '".time()."' WHERE user_id = '".$member_id["user_id"]."'");
}
}
Сохраняете изменения и здесь и отправляете файл обратно на сайт.
5. В файл comments.tpl, который находится в папке вашей темы, в нужное место вы вставляете код для отображения статуса пользователя:
Статус пользователя: {status}
После чего сохраняете изменения и отправляете файл обратно на сайт.
6. Чистите кэш сайта. Установка закончена.
Предложенный код успешно отработал в DLE линейки 11.x. В остальных версиях (как более поздних, так и ранних) код также должен работать без проблем.
В двух местах вы могли заметить число «180» – это время в секундах, после которого информация о статусе «В сети» устаревает. То есть, если человек за 180 секунд не проявил никакой активности на сайте, то считается, что он ушел с сайта, и его статус заменяется на «Offline» (не в сети).
Что касается нагрузки на сайт, то здесь добавляется 1 SQL-запрос к базе данных от авторизованного пользователя, один раз в указанное время.