Генератор случайных чисел   •   Online-инструменты
426 просм
4 комм
Поделиться:

Выводим статус пользователя в комментариях в 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-запрос к базе данных от авторизованного пользователя, один раз в указанное время.

4
комментария
17.03 в 01:22
В DLE есть возможность вывода статуса:
[online]{author} (онлайн)[/online]
[offline]{author} (оффлайн)[/offline]

Или я что то путаю?
  • 0
Scorpion, насколько я помню - в старых версиях DLE нет поддержки этих тегов + по стандарту (это указано в документации к движку) статус "онлайн" отображается на протяжении 20 минут с момента последнего посещения.

То есть по сути, инструкция для тех кто "сидит" на старых версиях движка и для тех, кто хочет более точную информацию.
  • 1
17.03 в 07:07
Как всегда все через одно место. В статье нельзя было указать что это для древних версий дле!?
  • -1
pepsi, а что Вам не понятно во фразе "Предложенный код успешно отработал в DLE линейки 11.x. В остальных версиях (как более поздних, так и ранних) код также должен работать без проблем."?
  • 0
Гостям запрещено учавствовать в обсуждениях сайта. Авторизуйтесь, чтобы иметь возможность оставить свое мнение о материале или задать вопрос.
Подняться наверх