Новое меню в 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-кода, который открывается выше

  • RSS ленты

  • 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 ленты”, при наведении на которое появится список с лентами вашего сайта.

    Не забываем,что для создания социальной сети вам нужно:

    1. скачать русский BuddyPress;
    2. скачать шаблоны BuddyPress;
    3. скачать плагины BuddyPress.

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

    1. максим:

      нормальная идейка, поглядим что получится

    2. Кстати, чтобы не возникло никаких недоразумений по поводу ссылок на RSS, я их удалил. Поэтому вставлять вам придется самим. Самое сложное – это ссылка на ленту активности сайта. Советую вам открыть файл bp-activity/bp-activity-widgets.php и там на строке 29 есть ссылка на RSS ленту. Вам надо будет в двойные кавычки вставить заключенную в php-теги вот эту функцию: bp_sitewide_activity_feed_link().
      И все.

    3. перенес за пару дней до поста вверх юзерменю, которое было слева. меньше путаницы имхо, а то получалось два столбца с одинаковыми иконками и названиями – любой бы запутался :]

    4. Тоже вариант использования:)

    5. Alex:

      Пасиба! Весьма полезный совет, Мастера! :)
      … в “Активности на сайте”, когда кто либо из участников что то обновляет, заполняет и т.д. – видно кто чем занимается… :) когда пишется пост в блог – идут цитаты из блога… Как реализовать функцию что бы не было таких цитат (и довольно большого объема) … а просто “*Вася Пупкин* написал в блоге *Про хомячков* пост *Живут ли хомячки на Северном Полюсе*” :)
      (*- это ссылки на Васю, его блог и пост)

    6. Для реализации этого необходимо редактировать функцию bp_activity_content_filter в файле bp-activity-templatetags.php начиная со строки 232 (фактически, вам нужны строки 262-263).

    7. Alex:

      Примного благодарен! Уже сажусь за учебник PHP, дабы разгадать головоломку функций :)

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

    Ваш адрес email не будет опубликован. Обязательные поля помечены *