Новое меню в BuddyBar’e
При установке BuddyPress, помимо нового меню в Администрировании, админ при заходе на свой сайт сразу же замечает полоску навигации серого цвета (а если он выбрал в настройках “показывать неавторизованным пользователям”, то абсолютно все ее замечают). Там, в зависимости от роли текущего посетителя, отображается или “Войти” и “Регистрация”, или “Мой аккаунт”, “Мои блоги”, “Уведомления” и в дальнем левом углу еще и “Показать” (случайного пользователя, блог или группу).
Но могут возникнуть ситуации, когда необходимо туда вставить что-нибудь свое, предположим, отображение RSS ленты (не самих лент, естественно, а ссылок на них). При чем на сайте их может быть уже как минимум три: RSS активности на сайте (это новая лента – BuddyPress), RSS записей и комментариев (стандартные).
Прошу заметить, что не только RSS можно, но и форму поиска, к примеру, вообще любой php-код (javascript не получится, к сожалению).
Есть 2 способа сделать это: внедрение с помощью плагина или просто вписать нужный код в нужном месте в файле bp-core-adminbar.php. Мне больше нравится первый вариант из-за того, что надо что-то изменить – просто изъял файл-плагин из папки, отредактировал – и вернул на место. С файлом оригиналом так не получится – развалится все.
Я расскажу как раз о том, что мне не нравится. Итак, открываем файл bp-core-adminbar.php, на строке 200 (почти в самом низу) есть отображение Random, вот вместо него и поставим отображение RSS ленты, к примеру.
Удаляем тот весь код и ставим методом копи-паста следующее:
[code=’php’]
// **** RSS меню – всегда видно ( надеюсь ) ********
function bp_myrss() { //я так назвал эту функцию
?> //закрывающий тег, необходим из-за php-кода, который открывается выше
echo ‘
‘;
echo ‘
‘;
$doing_admin_bar = false;
}
[/code]
Еще необходимо заявить о существований новой функции и подключить ее, для этого вставляем внизу страницы в соответствующий блок (вы увидите сразу же) вот такой код:
[code=’php’]
// удаляем эту строку
add_action( ‘bp-adminbar-menus’, ‘bp_adminbar_random_menu’, 100 );
//вместо нее ставим эту
add_action( ‘bp-adminbar-menus’, ‘bp_myrss’, 100 );
[/code]
В итоге, при загрузке страницы, в самом верху вместо меню “Показать” будет теперь “RSS ленты”, при наведении на которое появится список с лентами вашего сайта.
Не забываем,что для создания социальной сети вам нужно:
нормальная идейка, поглядим что получится
Кстати, чтобы не возникло никаких недоразумений по поводу ссылок на RSS, я их удалил. Поэтому вставлять вам придется самим. Самое сложное – это ссылка на ленту активности сайта. Советую вам открыть файл bp-activity/bp-activity-widgets.php и там на строке 29 есть ссылка на RSS ленту. Вам надо будет в двойные кавычки вставить заключенную в php-теги вот эту функцию: bp_sitewide_activity_feed_link().
И все.
перенес за пару дней до поста вверх юзерменю, которое было слева. меньше путаницы имхо, а то получалось два столбца с одинаковыми иконками и названиями – любой бы запутался :]
Тоже вариант использования:)
Пасиба! Весьма полезный совет, Мастера! :)
… в “Активности на сайте”, когда кто либо из участников что то обновляет, заполняет и т.д. – видно кто чем занимается… :) когда пишется пост в блог – идут цитаты из блога… Как реализовать функцию что бы не было таких цитат (и довольно большого объема) … а просто “*Вася Пупкин* написал в блоге *Про хомячков* пост *Живут ли хомячки на Северном Полюсе*” :)
(*- это ссылки на Васю, его блог и пост)
Для реализации этого необходимо редактировать функцию bp_activity_content_filter в файле bp-activity-templatetags.php начиная со строки 232 (фактически, вам нужны строки 262-263).
Примного благодарен! Уже сажусь за учебник PHP, дабы разгадать головоломку функций :)