Поиск в каталогах пользователей, групп и блогов на русском!

Уверен, все из вас обрадуются этой новости – теперь поиск в каталоге пользователей, групп и блогов возможен по первым буквам РУССКОГО алфавита! Спасибо за такую прекрасную новость человеку с ником 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> вставьте тот же самый код, что и в пользователях, и сохраните.

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

комментариев 12

  1. Motsarev:

    Славик ты как всегда молодец, уверен эта новость порадует поклонников и просто тех кто использует buddypress

  2. Koshnv:

    ДА! Зачетное дополнение!
    А то что надо ручками править так это не беда, а на мой взгляд даже плюс!

  3. @Motsarev:
    Спасибо большое за хорошие слова!! :) Надеюсь, порадуются они все.

    @Koshnv:
    Да, возможно, что и правильно. BuddyPress и так много жрет, так хоть на один плагин меньше.. Но далеко не все любят/могут/умеют делать такое ручками.

  4. Я обновил информацию. Тем, кому она полезна, советую просмотреть еще раз.

  5. Mac:

    Что-то у меня не находит…
    Более того, русский алфавит начинается не с новой строки, а в продолжении первой строки, но чуть ниже. Очень странно…

    Кстати, ошибка в переводе “Блоги не найдены. Автору необхиодимо заполнить свой профиль, чтобы его блог отображался в общем списке.”

  6. Mac:

    Нашел причину – в посте кавычки неправильные. Славик, используй для кода специальный тэг и плагин подсветки бы не помешал.

  7. Спасибо огромнейшее!
    Все чудесно работает.

  8. @Татьяна:
    Я рад, что у вас все хорошо работает :)

  9. Tagir:

    @Mac, чтобы алфавит начинался с новой строчки нужно в конце первой строки (из тех, что вставляем) написать
    Это перенесет все буквы на новую строку.
    А вот русский поиск у меня тоже почему-то не работает. Надеюсь, что как Вы и говорите дело в кавычках. Буду сегодня править.

  10. Tagir:

    Некорректно отправился комментарий. Видимо система восприняла как тэг. Сорри. Нужно вставить символ переноса строки: br/ в кавычках .

  11. Tagir:

    Никто не знает можно ли как-то настроить индексацию текста внутри блогов, в сообщениях, и соответственно настроить саму систему поиска, чтобы можно было искать все посты, в которых есть словосочетание, например, “морозная погода” :-) чтобы искал по словам? а не только по меткам.

  12. miliko:

    Подскажите, а для последней версии как реализовать?

Добавить комментарий

Ваш адрес email не будет опубликован.