Артём Мáлков

Выводим статус пользователя в комментариях в DLE

16 мар5 комм

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

Рекомендуем к просмотру
Выводим комментарий к заказу в почтовом уведомлении для пользователя в OpenCart
Хаки
Выводим расширение файла (attachment) в DLE версий ниже 10.5
Хаки
«U.Efficiency» 2.0 – модуль расчета коэффициента активности пользователя для DLE
Модули и скрипты
5
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    1
      •  Пользователь
    9 июл в 10:25

    Добавил разделение по цвету

    // Статус пользователя в комментариях
    
    			if($row["lastdate"] > (time() - 180)) {
    
    				$tpl->set("{status}", "<div class='commets_status_on'></div>");
    
    			} else {
    
    				$tpl->set("{status}", "<div class='commets_status_off'></div>");
    
    			}

    css:

    .commets_status_on {
    	background-color: green;
    	width: 10px;
    	height: 10px;
    }
    
    .commets_status_off {
    	background-color: red;
    	width: 10px;
    	height: 10px;
    }
    • 0
    1067
      •  Команда Pandoge
    17 мар в 13:58

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

    • -1
    1
      •  Пользователь
    17 мар в 07:07

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

    • 1
    1067
      •  Команда Pandoge
    17 мар в 02:32

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

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

    • 0
    8
      •  Проверенный
    17 мар в 01:22

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

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

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

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

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