Поиск в каталогах пользователей, групп и блогов на русском!
Уверен, все из вас обрадуются этой новости – теперь поиск в каталоге пользователей, групп и блогов возможен по первым буквам РУССКОГО алфавита! Спасибо за такую прекрасную новость человеку с ником isaev, который прислал мне свое решение данной проблемы.
Как вы знаете, летом я занимался этим, хотел сделать поиск – и сделал его, но для пользователей только. Но ведь летом был BuddyPress 1.0.x – то есть старая версия. А вот буквально пару минут назад (пост этот я писал 3 дня назад) я заглянул в код – и увидел значительные изменения, что позволило редактированием нескольких строк кода и добавлением маленького блока сделать полноценный русский поиск. Ну разве не замечательно?!
UPD: isaev прислал исправление моей ошибки, допущенной по спешке. Поэтому скрин и текст немного поменяется. Не желательно использовать два одинаковых id – это раз, во-вторых, красивее выглядит без использования тега <p>.
Как обычно, работу данного поиска вы можете видеть у меня на демо-сайте.

Поиск в каталоге по русским буквам
Для того, чтобы и у вас было точно также, необходимо будет скопировать несколько строк кода и вставить их в ваши файлы шаблонов. На данный момент все изменения надо делать вручную (по другому пока никак – я проверил), но я буду общаться с Andy, чтобы сделали необходимые изменения в коде ядра, чтобы можно было с помощью плагина вносить изменения. Этот плагин я напишу, и когда появятся нужные мне хуки – выложу для вас.
Перед работой с файлами прошу убедиться вас, что вы пользуетесь правильным редактором!
Установка поиска в каталогах по первым русским буквам (для стандартного шаблона):
I. Пользователи:
1) откройте файл /buddypress/bp-core/bp-core-classes.php;
2) на строке 219 в фразе “if ( strlen($letter) > 1” в функции get_by_letter() число 1 замените на число 2 и сохраните;
3) откройте /themes/bp-sn-parent/directories/members/index.php;
4) в строку 39 сразу ПЕРЕД закрывающим тегом </ul> вставьте следующий код и сохраните:
<br style=”clear: both;”/>
<li><a href=”#а” id=”letter-а”>А</a></li>
<li><a href=”#б” id=”letter-б”>Б</a></li>
<li><a href=”#в” id=”letter-в”>В</a></li>
<li><a href=”#г” id=”letter-г”>Г</a></li>
<li><a href=”#д” id=”letter-д”>Д</a></li>
<li><a href=”#е” id=”letter-е”>Е</a></li>
<li><a href=”#ж” id=”letter-ж”>Ж</a></li>
<li><a href=”#з” id=”letter-з”>З</a></li>
<li><a href=”#и” id=”letter-и”>И</a></li>
<li><a href=”#к” id=”letter-к”>К</a></li>
<li><a href=”#л” id=”letter-л”>Л</a></li>
<li><a href=”#м” id=”letter-м”>М</a></li>
<li><a href=”#н” id=”letter-н”>Н</a></li>
<li><a href=”#о” id=”letter-о”>О</a></li>
<li><a href=”#п” id=”letter-п”>П</a></li>
<li><a href=”#р” id=”letter-р”>Р</a></li>
<li><a href=”#с” id=”letter-с”>С</a></li>
<li><a href=”#т” id=”letter-т”>Т</a></li>
<li><a href=”#у” id=”letter-у”>У</a></li>
<li><a href=”#ф” id=”letter-ф”>Ф</a></li>
<li><a href=”#х” id=”letter-х”>Х</a></li>
<li><a href=”#ц” id=”letter-ц”>Ц</a></li>
<li><a href=”#ч” id=”letter-ч”>Ч</a></li>
<li><a href=”#ш” id=”letter-ш”>Ш</a></li>
<li><a href=”#э” id=”letter-э”>Э</a></li>
<li><a href=”#ю” id=”letter-ю”>Ю</a></li>
<li><a href=”#я” id=”letter-я”>Я</a></li>
II. Группы:
1) откройте файл /buddypress/bp-groups/bp-groups-classes.php;
2) на строке 459 “if ( strlen($letter) > 1” в функции get_by_letter() число 1 меняете на 2;
3) откройте /themes/bp-sn-parent/directories/groups/index.php;
4) в строку 40 сразу ПЕРЕД закрывающим тегом </ul> вставьте тот же самый код, что и в пользователях, и сохраните.
III. Блоги:
1) откройте файл /buddypress/bp-blogs/bp-blogs-classes.php;
2) так как там вообще нет подобной проверки “if ( strlen($letter) > 1”, то мы ее добавим вручную на строки 182-183 вставьте вот это:
if ( strlen($letter) > 2 || is_numeric($letter) || !$letter )
return false;
3) откройте /themes/bp-sn-parent/directories/blogs/index.php;
4) в строку 40 сразу ПЕРЕД закрывающим тегом </ul> вставьте тот же самый код, что и в пользователях, и сохраните.
Вот и все. После этого появится список русских букв, при нажатии на которые будет происходить фильтрация пользователей по первым буквам их имен..
Славик ты как всегда молодец, уверен эта новость порадует поклонников и просто тех кто использует buddypress
ДА! Зачетное дополнение!
А то что надо ручками править так это не беда, а на мой взгляд даже плюс!
@Motsarev:
Спасибо большое за хорошие слова!! :) Надеюсь, порадуются они все.
@Koshnv:
Да, возможно, что и правильно. BuddyPress и так много жрет, так хоть на один плагин меньше.. Но далеко не все любят/могут/умеют делать такое ручками.
Я обновил информацию. Тем, кому она полезна, советую просмотреть еще раз.
Что-то у меня не находит…
Более того, русский алфавит начинается не с новой строки, а в продолжении первой строки, но чуть ниже. Очень странно…
Кстати, ошибка в переводе “Блоги не найдены. Автору необхиодимо заполнить свой профиль, чтобы его блог отображался в общем списке.”
Нашел причину – в посте кавычки неправильные. Славик, используй для кода специальный тэг и плагин подсветки бы не помешал.
Спасибо огромнейшее!
Все чудесно работает.
@Татьяна:
Я рад, что у вас все хорошо работает :)
@Mac, чтобы алфавит начинался с новой строчки нужно в конце первой строки (из тех, что вставляем) написать
Это перенесет все буквы на новую строку.
А вот русский поиск у меня тоже почему-то не работает. Надеюсь, что как Вы и говорите дело в кавычках. Буду сегодня править.
Некорректно отправился комментарий. Видимо система восприняла как тэг. Сорри. Нужно вставить символ переноса строки: br/ в кавычках .
Никто не знает можно ли как-то настроить индексацию текста внутри блогов, в сообщениях, и соответственно настроить саму систему поиска, чтобы можно было искать все посты, в которых есть словосочетание, например, “морозная погода” :-) чтобы искал по словам? а не только по меткам.
Подскажите, а для последней версии как реализовать?