Супербыстрый хостинг на SSD от 115р в месяц   •   Реклама
607 просм
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
комментария
Гостям запрещено участвовать в обсуждениях сайта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.

pepsi, а что Вам не понятно во фразе "Предложенный код успешно отработал в DLE линейки 11.x. В остальных версиях (как более поздних, так и ранних) код также должен работать без проблем."?

  • 0
17.03 в 07:07

Как всегда все через одно место. В статье нельзя было указать что это для древних версий дле!?

  • -1

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

То есть по сути, инструкция для тех кто "сидит" на старых версиях движка и для тех, кто хочет более точную информацию.

  • 1
17.03 в 01:22

В DLE есть возможность вывода статуса:

[online]{author} (онлайн)[/online]

[offline]{author} (оффлайн)[/offline]

Или я что то путаю?

  • 0
Подняться наверх
«Pandoge» - помощник веб-мастера