travisnorthcutt
  • 0
Гуру

Создать область виджетов на панели навигации для Genesis Theme Framework?

  • 0

( Примечание модератора: первоначальный заголовок был «Как я могу создать область виджетов на панели навигации (специфично для Genesis)?»(

Я пытаюсь создать область виджетов на панели навигации. Я пытаюсь адаптировать это из превосходного руководства Билла Эриксона по добавлению статического контента на панель навигации.

Это код, который я добавил в свой файл functions.php для регистрации и размещения области виджета:

    genesis_register_sidebar(array(
    'name'=>'Nav Right',
    'description' => 'This is the right section of the navbar.',
    'before_widget' => '<div id="%1$s" class="widget %2$s">', 'after_widget'  => '</div>',
    'before_title'=>'<h4 class="widgettitle">','after_title'=>'</h4>'
));

//Adding the widget area to the navbar
add_filter('genesis_nav_items','navbar_widget',10,1);
add_filter('wp_nav_menu_items','navbar_widget',10,1);
function navbar_widget() {
    ?>
    <div class="nav_right">
    <?php if (!dynamic_sidebar('Nav Right')) : ?>
            <div class="widget">
            <h4><?php _e("Nav Right", 'genesis'); ?></h4>
            <p><?php _e("This is a widgeted area which is called Nav Right.", 'genesis'); ?></p>
        </div>
    <?php endif; ?>
    </div><!-- end .nav-right -->
    <?php
}

Однако в итоге я получаю следующее:

альтернативный текст

С областью виджетов за пределами панели навигации (и ссылками, удаленными с панели навигации — там должна быть ссылка «Домой» и «О программе»).

Это html (когда я просматриваю исходный код страницы):

<body class="home blog logged-in content-sidebar"> 
 <div id="wrap"> 
<div id="header"><div class="wrap"><div id="title-area"><h1 id="title"><a href="http://travisnorthcutt.com/gateway/" title="Research Valley International Gateway">Research Valley International Gateway</a></h1><p id="description">Just another WordPress site</p></div><!-- end #title-area --><div class="widget-area"></div><!-- end .widget_area --></div><!-- end .wrap --></div><!--end #header--> 
   <div class="nav_right">
                <div class="widget">
            <h4>Nav Right</h4>
            <p>This is a widgeted area which is called Nav Right.</p>
        </div>
        </div><!-- end .nav-right -->
  <div id="nav"><div class="wrap"></div></div>

Любые предложения о том, как получить новую область виджета, которая создается внутри <div id="nav"></div> ?

Share
  1. Я чувствую, что этот вопрос лучше задать на форумах StudioPress. Этот сайт не должен превращаться в канал бесплатной поддержки премиальных тем.

    • 0
  2. Вы добавляете фильтр, а не действие. Я не знаю, как работает хук Genesis, но натив wp_nav_menu_items передает (и ожидает обратно) разметку пользовательских пунктов меню.

    Вместо того, чтобы повторять ваш дополнительный материал, вы должны добавить его к вводу и возврату.

    Это ясно, как это делается в учебнике, на который вы ссылаетесь:

    add_filter('wp_nav_menu_items','follow_icons',10,1);
    function follow_icons($output) {
        $follow = 'some stuff';
        return $output.$follow;
    }
    

    Обновление Забыл добавить про сайдбар. Поскольку боковые панели отображаются по определению, вам, вероятно, придется буферизовать их вывод для использования таким образом. Может быть, вместо того, чтобы делать виджет буквально внутри меню, лучше поискать поблизости хук, позволяющий это сделать?

    • 0

Оставить ответ

You must login to add an answer.