Меняем сортировку по умолчанию в memberlist.php

В данном подфоруме будут располагаться все статьи, помогающие освоиться в администрировании форума.

Модераторы: Vl@d1m1r, Lorem Ipsum, Atlas

Правила форума
----
Ответить
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение DeaDRoMeO »

Всем доброго времени суток. Сегодня я расскажу каким образом можно изменить стандартную сортировку списка пользователей. Опираясь на логику этой статьи, можно менять сортировку там, где она есть.

Как известно, список всех пользователей сортируется по умолчанию по дате регистрации по нарастающей, от первого до последнего пользователя. Нас будет интересовать файл memberlist.php. Начнем с этого куска

Код: Выделить всё

$default_key = 'c';
$sort_key = request_var('sk', $default_key);
$sort_dir = request_var('sd', 'a');
Где

Код: Выделить всё

$default_key = 'c';
Это ключ по которому идет сортировка, а

Код: Выделить всё

$sort_dir = request_var('sd', 'a');
Метод сортировки: по убыванию или возрастанию.

Теперь по порядку. Начнем с ключей. Как я и писал выше - это данные по которым можно провести сортировку. Именно ключом является буковка c. Следовательно, если надо поменять сортировку по другому параметру - нужно изменить эту букву на другую. Какую именно ? Смотрите ниже

Список доступных ключей (это буквы латинского алфавита!!!):
  • a - по никнеймам пользователей
  • b - по полю Откуда
  • c - по дате регистрации
  • d - по количеству сообщений
  • e - по адресу электронной почты
  • f - по полю Сайт
  • g - по полю ICQ
  • h - по полю AIM
  • i - по полю MSNM
  • j - по полю YIM
  • k - по полю JABBER
  • l - по дате последнего посещения
  • m - по рангу на форуме
  • n - по полю Скайп (для тех у кого установлен данный мод)
Вообщем оринтируясь по данному списку вы выбираете ключ сортировки и меняете его в указанной строке. Теперь вернемся к

Код: Выделить всё

$sort_dir = request_var('sd', 'a');
Нашему методу сортировки. Если вас все устраивает (сортировка по возрастанию) то дальше можете не читать, а если вам нужна сортировка по убыванию, то меняем в этой строке буковку a на d, получится вот так

Код: Выделить всё

$sort_dir = request_var('sd', 'd');
Далее находим

Код: Выделить всё

'sd'			=> array('sd', 'a'),
Заменяем на

Код: Выделить всё

'sd'			=> array('sd', 'd'),
Теперь самое сложное во всей статье, понять логику следующей правки. Нам нужна еще одна правка. Ловите логику, очень внимательно. Допустим, меняем сортировку на ключ l (по дате последнего посещения), в поиск по коду файла
memberlist.php вбиваем фразу

Код: Выделить всё

$sort_key == 'l'
Этот кусок присутствует в строке (и только в ней, только она нужна!!!)

Код: Выделить всё

'U_SORT_ACTIVE'			=> ($auth->acl_get('u_viewonline')) ? $sort_url . '&sk=l&sd=' . (($sort_key == 'l' && $sort_dir == 'a') ? 'd' : 'a') : '',
Смотрим в конец строки и видим

Код: Выделить всё

$sort_dir == 'a') ? 'd' : 'a') : '',
Меняем ее на

Код: Выделить всё

$sort_dir == 'd') ? 'a' : 'd') : '',
В итоге строка примет вид

Код: Выделить всё

'U_SORT_ACTIVE'			=> ($auth->acl_get('u_viewonline')) ? $sort_url . '&sk=l&sd=' . (($sort_key == 'l' && $sort_dir == 'd') ? 'a' : 'd') : '',
Уловили суть ?? Буквочки надо местами поменять.

На этом впринципе все, теперь вы умеете лично под себя настроить страницу со списком пользователей, сделать сортировку по умолчанию на свой вкус. Надеюсь пригодится комунибудь моя писанина :-0=)
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#1
Аватара пользователя
ursego
Свой на все 100
Свой на все 100
Сообщения: 478
Стаж: 11 лет 2 месяца
Откуда: Днепропетровск
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение ursego »

Я сделал сортировку по времени последнего посещения - по-моему, это самый интересный расклад: заходишь и видишь в начале списка самых последних посетителей. Для этого тупо прописал ссылку http://forum.north-ameri.ca/memberlist.php?mode=&sk=l&sd=d#memberlist, без модов.
#2
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение DeaDRoMeO »

Ну кому как удобней))Тем более это ж не мод)
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#3
Аватара пользователя
Олега
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 191
Стаж: 7 лет 1 месяц
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение Олега »

1. Хочу сделать сортировка только по логину

Меняю сортировку на по логину:
a. $default_key = 'a';
b. $sort_dir = request_var('a', 'sd');
Больше ничего не менял.
Результат: русские логины по алфавиту все окей а английские алфавит но наоборот ( порядок идет с конца )
Я криворукий или не все сделал или... типа .... "или так или никак"? :-0=)

2. Попробовал по городу ( b ) Только изменил $default_key = 'b'; - не открывает ( страница с выводом ошибок sql )

3. И я не пойму вторая часть изменений где образец по l - А что это дает? Это отдельное изменение или надо вместе с первой часть делать?

Может у меня 3.1.10 а тут для 3.0 из за этого?
У меня phpbb 3.1.10
#4
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение DeaDRoMeO »

Это конечно интересно, почему у вас

Код: Выделить всё

$sort_dir = request_var('a', 'sd');
вместо

Код: Выделить всё

$sort_dir = request_var('sd', 'a');
Разницу видите?
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#5
Аватара пользователя
Олега
Активно осваиваю Форум
Активно осваиваю Форум
Сообщения: 191
Стаж: 7 лет 1 месяц
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение Олега »

Конечно вижу. Я их переставил. Чтоб логины были по алфавиту. Сверху А и поехали вниз до Я. Ток тогда английские ники алфавит наоборот ставятся. Вот и интересно а как тогда и анлийские чтоб так же шли?
У меня phpbb 3.1.10
#6
Аватара пользователя
DeaDRoMeO
Старожил Форума
Старожил Форума
Сообщения: 16763
Стаж: 13 лет
Откуда: Витебск
Контактная информация:

Меняем сортировку по умолчанию в memberlist.php

Сообщение DeaDRoMeO »

Все правильно, по обычной сортировке сначала идут английские ники по алфавиту, потом только русские, а вы поменяли порядок. Тут ничего не сделать
На вопросы, связанные с phpBB, по ЛС не отвечаю !!!
#7
Ответить