Поддержка BuddyPress Удалить меню со страниц, оставив в buddyBar'е

  • Решено kaizer

    (@kaizercomru)


    Кто нибудь знает, как удалить меню в профиле пользователей (Активность Профиль Сообщения Друзья Настройки) на страницах так, чтобы оно осталось в менюшке сверху страницы?

    Или можно ли отредактировать вручную это меню и добавлять самому туда пункты ?

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Не вмещается в шаблоне? 🙂

    Вам поможет вот этот код (может дать пищу для ума, натолкнуть на идею, еще что-нибудь):

    function neltp_acc_navi(){
        global $bp;
    
        if ( !is_user_logged_in() )
            return false;
    
    //   $bp->doing_admin_bar = true;
        $acc_navi .= '<li><a href="' . $bp->loggedin_user->domain . '">';
    
        $acc_navi .= __( 'My Account', 'buddypress' ) . '</a>';
        $acc_navi .= '<ul>';
    
        /* Loop through each navigation item */
        $counter = 0;
        foreach( (array)$bp->bp_nav as $nav_item ) {
            $alt = ( 0 == $counter % 2 ) ? ' class="alt"' : '';
            if ($nav_item['name'] == 'Settings') continue;
            $acc_navi .= '<li' . $alt . '>';
            $acc_navi .= '<a id="bp-admin-' . $nav_item['css_id'] . '" href="' . $nav_item['link'] . '">' . $nav_item['name'] . '</a>';
    
            if ( is_array( $bp->bp_options_nav[$nav_item['slug']] ) ) {
                $acc_navi .= '<ul>';
                $sub_counter = 0;
    
                foreach( (array)$bp->bp_options_nav[$nav_item['slug']] as $subnav_item ) {
                    $link = str_replace( $bp->displayed_user->domain, $bp->loggedin_user->domain, $subnav_item['link'] );
                    $name = str_replace( $bp->displayed_user->userdata->user_login, $bp->loggedin_user->userdata->user_login, $subnav_item['name'] );
    
                    $alt = ( 0 == $sub_counter % 2 ) ? ' class="alt"' : '';
                if($nav_item['slug'] == 'activity' && $subnav_item['slug'] == 'just-me') {
                   $acc_navi .= '<li><a href="'.site_url() .'/'. BP_ACTIVITY_SLUG .'">Sitewide</a></li>';
                }
                    $acc_navi .= '<li' . $alt . '><a id="bp-admin-' . $subnav_item['css_id'] . '" href="' . $link . '">' . $name . '</a></li>';
                    $sub_counter++;
                }
                $acc_navi .= '</ul>';
            }
    
            $acc_navi .= '</li>';
          if($nav_item['slug'] == BP_GROUPS_SLUG) {
             $acc_navi .= '<li><a href="'.site_url() .'/'. BP_GROUPS_SLUG .'/create">Create a Group</a></li>';
          }
            $counter++;
        }
    
        $alt = ( 0 == $counter % 2 ) ? ' class="alt"' : '';
    
        $acc_navi .= '<li' . $alt . '><a id="bp-admin-logout" class="logout" href="' . wp_logout_url( get_bloginfo('url') ) . '">' . __( 'Log Out', 'buddypress' ) . '</a></li>';
        $acc_navi .= '</ul>';
        $acc_navi .= '</li>';
    //   $bp->doing_admin_bar = false;
       return $acc_navi;
    }

    Эта функция полностью копирует стандартный вывод элементов в BuddyBar под меню Учетная запись. С помощью строки if ($nav_item['name'] == 'Settings') continue; вы не отображаете определенные элементы. Они остаются в системе, но не отображаются.
    Вот вам самый простой порядок действий:
    1) находите функцию в шаблоне, которая выводит нужное вам меню;
    2) копируете ее в functions.php шаблона
    3) переименовываете
    4) удаляете ненужные элементы
    5) вставляете новое название этой функции в нужном месте в шаблоне
    7) радуйтесь

    Пункт 6) я пропустил специально. Ибо:
    а) у вас ничего не получится с первого раза,
    б) негоже писать пожелание «радуйтесь» возле числа «6».

    Успехов!

    Автор kaizer

    (@kaizercomru)

    Либо я не понял Вас, либо Вы меня — уточняю — мне нужно, что бы в buddyBar’е всё осталось, а на страницах — убралось.

    Я же четко сказал, что это вас может натолкнуть на идею. Я не говорил, что это решение. И тем более я вам также указал порядок действий. Суть в копировании, изменении имени функции, пропуска ненужных элементов и использовании вновь созданной функции вместо стандартной.

    PS Пункт 6 в действии 🙂

    Автор kaizer

    (@kaizercomru)

    Значит это я не так понял. Буду пробовать.

    Автор kaizer

    (@kaizercomru)

    Я решил сделать проще:
    Отключить BuddyBar и написать своё меню, что бы располагать его справа на сайте(fixed).
    Теперь вот проблема, как его подключить к теме (оно у меня в отдельном файле)?

    В нужном месте пишите:
    <?php include(TEMPLATEPATH.'/file.php'); ?>
    /file.php — путь к файлу относительно корня папки шаблона.

    Автор kaizer

    (@kaizercomru)

    Вкрутил. Но меню теперь при появлении под всю тему уползает.

    Автор kaizer

    (@kaizercomru)

    И такой вопрос:
    Не нашёл (может и пропустил) функцию, определяющую, на странице какого пользователя я нахожусь (путь к ней /members/USER) и его имя, отображаемое на странице. Подскажите.
    На мою страницу bp_loggedin_user_domain()

    Глобальная переменная $bp->displayed_user. Это объект. Распечатайте его print_r и увидите кучу инфо о пользователе, на странице которого вы в данный момент находитесь.

    Автор kaizer

    (@kaizercomru)

    <?php
    echo «<input type=’button’ style=’position:fixed; left:0; top:40%;’ OnClick='».print_r(‘$bp->displayed_user’).»‘/>»?>

    Правильно ли я делаю ? Или я просто не понял чего то?
    php знаю не очень хорошо, тизучаю всего пару месяцев.

    Это php переменная 🙂 Вот так надо:

    <?php
    global $bp;
    print_r($bp->displayed_user);
    ?>

    Вставляете в шаблоне там, где хотите увидеть инфу о просматриваемом профиле (/members/single/…php)

    Автор kaizer

    (@kaizercomru)

    Спасибо. Разобрался. Скоро сделаю меню до конца (Надеюсь)
    Остался 1 вопрос:
    Как его поставить поверх темы ?
    Я вставлял в header.php на нём он сверху, а все остальные части над ним. В какой файл лучше вставить ?

    Я не понимаю, как это «поверх темы». Вы имеете в виду выпадающий список? Так это делается с помощью css.

    Автор kaizer

    (@kaizercomru)

    http://www.kaizer-com.ru/1.jpg вот фото (слева когда страница не прокручена в низ, справа когда немного прокручена). Мучаю на локалхосте его пока что. На сайт боюсь пока кидать, мало ли что 🙂

    Вставьте в footer.php и сделайте элементу абсолютное позиционирование через css. Тогда будет сверху всегда.

Просмотр 15 ответов — с 1 по 15 (всего 15)
  • Тема «Удалить меню со страниц, оставив в buddyBar'е» закрыта для новых ответов.