Dipler.ru

Мы поделимся с тобой своим бесценным опытом

У нас ты найдешь только нужный и полезный контент

Информационный блог, посвящённый различным темам

Список пользователей для DLE 12.x + Исправление ошибок

Наверняка вам известен замечательный модуль от Arteom, который добавляет список пользователей на ваш сайт, с возможностью поиска определенного пользователя и сортировкой пользователей по отдельным критериям. Множество сайтов уже успело распространить данное дополнение. Однако я заметил, что в поисковой выдачи попросту отсутствует версия данного модуля под DLE 12.0 и выше. А ведь именно на 12 версии DLE возникают проблемы со списком, которые стоило бы исправить. Спешу вас обрадовать, в данной статье вы сможете не только найти исправленную версию модуля под DLE 12.x, но и понять, как исправить ошибки самостоятельно. В качестве бонуса также прилагаю готовое оформление списка пользователей.

Содержание:
Исправляем ошибку с отправкой персональных сообщений
Исправляем ошибку с аватарами пользователей
Как подсветить никнеймы пользователей в списке?
Как изменить стандартные значения поиска?
Как поменять формат даты и времени?
Скачать исправленную версию модуля

Исправляем ошибку с отправкой персональных сообщений

Ошибка заключается в том, что при нажатии на отправку "Персональных сообщений" нас перекидывает на страницу отправки сообщения, но строка имени адресата оказывается пустой. Это неправильно, так быть не должно. Пользователь не должен в такой ситуации вводить за каждым разом никнейм своего собеседника, да и на всем сайте эта функция работает нормально. Также тег {pm} приходится встраивать в ссылку, хотя по дефолту он автоматически преобразуется в кликабельную ссылку. Исправим эти недочеты.

Находим код:

if ($user_group[$member_id['user_group']]['allow_pm']) {
        $tpl->set('[pm]', "");
        $tpl->set('[/pm]', "");
        $tpl->set('{pm}', "$PHP_SELF?do=pm&doaction=newpm&user=" . $row['name']);
        $tpl->set_block("'\\[not-pm\\](.*?)\\[/not-pm\\]'si", "");
    } else {
        $tpl->set_block("'\\[pm\\](.*?)\\[/pm\\]'si", "");
        $tpl->set('{pm}', "");
        $tpl->set('[not-pm]', "");
        $tpl->set('[/not-pm]', "");
    }

Заменяем его на следующий:

if ( $user_group[$member_id['user_group']]['allow_pm'] ) {
		
		$tpl->set( '{pm}', "<a href=\"$PHP_SELF?do=pm&doaction=newpm&username=" . urlencode($row['name']) . "\">" . $lang['news_pmnew'] . "</a>" );
		
	} else {
		
		$tpl->set( '{pm}', $lang['news_pmnew'] );
	}

Теперь все будет работать должным образом.

Исправляем ошибку с аватарами пользователей

Ошибка заключается в том, что у всех пользователей отображается стандартная аватарка. Причиной этому является устаревший код, отвечающий за вывод аватарок в самом модуле. Обновим его.

Находим код:

if (count(explode("@", $row['foto'])) == 2) {
        $tpl->set('{gravatar}', $row['foto']);
        
        $tpl->set('{foto}', 'http://www.gravatar.com/avatar/' . md5(trim($row['foto'])) . '?s=' . intval($user_group[$row['user_group']]['max_foto

']));
        
    } else {
        
        if ($row['foto'] and (file_exists(ROOT_DIR . "/uploads/fotos/" . $row['foto'])))
            $tpl->set('{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto']);
        else
            $tpl->set('{foto}', "{THEME}/dleimages/noavatar.png");
        
        $tpl->set('{gravatar}', '');
    }

Заменяем его на:

if ( count(explode("@", $row['foto'])) == 2 ) {
		$tpl->set( '{gravatar}', $row['foto'] );	

		$tpl->set( '{foto}', '//www.gravatar.com/avatar/' . md5(trim($row['foto'])) . '?s=' . intval($user_group[$row['user_group']]['max_foto']) );
	
	} else {
	
		if( $row['foto'] ) {
			
			if (strpos($row['foto'], "//") === 0) $avatar = "http:".$row['foto']; else $avatar = $row['foto'];

			$avatar = @parse_url ( $avatar );

			if( $avatar['host'] ) {
				
				$tpl->set( '{foto}', $row['foto'] );
				
			} else $tpl->set( '{foto}', $config['http_home_url'] . "uploads/fotos/" . $row['foto'] );
			
		} else $tpl->set( '{foto}', "{THEME}/dleimages/noavatar.png" );

		$tpl->set( '{gravatar}', '' );
	}

В строке:

} else $tpl->set( '{foto}', "{THEME}/dleimages/noavatar.png" );

Вы сможете указать свой путь на дефолтную аватарку пользователей.

Как подсветить никнеймы пользователей в списке?

Сделаем так, что бы никнеймы пользователей и их статусы имели общий вид и общие стили.

Находим строку:

$tpl->set('{usertitle}', stripslashes($row['name']));

Ниже вставляем:

$tpl->set( '{username_title}', $user_group[$row['user_group']]['group_prefix'] . $row['name'] . $user_group[$row['user_group']]['group_suffix'] );

Таким образом мы создали новый тег {username_title}, который будет выводить уже подсвеченный ник пользователя.
Для чего был оставлен тег {usertitle} и на его замену был создан новый? Тег {usertitle} вы можете использовать для всплывающих подсказок. Если же мы заменим тег {usertitle} или кастомизируем его, то в сплывающих подсказках будет выводиться некорректный код.

Разумеется в шаблоне теперь используем тег {username_title} для вывода ников.

Вы также можете ознакомиться с тем как стилизовать ники пользователей под цвет групп в DLE, в комментариях и профилях пользователей.

Как изменить стандартные значения поиска?

Наверняка многие задавались вопросом, как же изменить значения поиска на свои. По дефолту поиск отсортирован по группам пользователей, а также выводится 10 пользователей на страницу. Не всех это устраивает и сейчас мы подправим поиск под себя.

Поменяем стандартное колличество отображаемых пользователей на страницу, для этого находим:

if ($_GET['count'] != "") {
    $searchcount = intval($_GET['count']);
    $postfix .= "&count=$searchcount";
} else {
    $searchcount = 10;
}

В этом куске кода находим строку:

$searchcount = 10; 

где 10 - число отображаемых пользователей на страницу. Меняем цифру на свою.

Сделаем отображение пользователей по их никнеймам, то есть от A до Z. Для этого находим:

if ($_GET['order'] != "") {
    $order_by = $_GET['order'];
    $postfix .= "&order=" . $_GET['order'];
} else
    $order_by = "user_group";

В нем наблюдаем следующую строку:

$order_by = "user_group";

где user_group параметр отвечающий за сортировку списка по группам пользователей. Меняем на name.

[!] Будьте внимательны, ковычки должны быть!

Доступные в данной конструкции значения:

name -> Логин
user_group -> Группа
reg_date -> Дата регистрации
lastdate -> Дата последнего входа
news_num -> Колличество новостей
comm_num -> Колличество комментариев

Поменяем вид отображения, по дефолту стоит По возрастанию. Для этого находим:

if ($_GET['sort'] != "") {
    $sort_by = $_GET['sort'];
    $postfix .= "&sort=" . $_GET['sort'];
} else {
    $sort_by = "ASC";
}

Находим в этом куске кода строку:

$sort_by = "ASC";

где ASC - параметр сортировки по возрастанию. Чтобы сделать По убыванию, вписываем значение DESC.

Как поменять формат даты и времени ?

Поменяем формат даты и времени в дате регистрации и в дате последнего входа на сайт, для этого находим 2 строки:

$tpl->set('{registration}', langdate("j F Y H:i", $row['reg_date']));
$tpl->set('{lastdate}', langdate("j F Y H:i", $row['lastdate']));

где j F Y H:i формат вывода. Подробнее о форматах в PHP можно ознакомиться ТУТ.

При скачивания модуля с нашего сайта, Вам будет доступно готовой оформление списка пользователей. Адаптивно под мобильные устройства.
Настройки поиска спрятаны и разворачиваются при нажатии на шестеренку, которая расположена около кнопки поиска. Для того, чтобы обратно свернуть настройки поиска, необходимо повторно нажать на шестеренку или кнопку Esc.
Инструкция по установке прилагается в архиве.

users-list-dle-12_x.zip [300.9 Kb] (cкачиваний: 3)

SaNeR

Автор: SaNeR

Автор: SaNeR

Опубликовано: 19.11.2019

169

0
0
+11

Информация:

Упс, кажется ты не сможешь оставить свой драгоценный комментарий под этой публикацией. Не спиши покидать страницу, это легко исправить, для этого пройди быструю регистрацию на нашем сайте или войди в уже существующий аккаунт.