说完首页定制化,我们迫切需要研究一下在Genesis Framework中如何添加Sidebar(widget area),首页可以主要由Widget构成,类似于joomla模块,样子看起来也不那么像博客了。

在Genesis下注册Sidebar很简单,在子模板的functions.php中加入如下代码

/** Register widget areas */
genesis_register_sidebar( array(
    'id'            => 'after-post-ad',
    'name'          => __( 'After Post Ad', 'themename' ),
    'description'   => __( 'This is a widget area that can be placed after the post', 'themename' ),
) );

'id' – 必须是一个不重复的值,可以是字母或数字下划线,不可以有空格或其他特殊字符,更不要命名为sidebar-1,sidebar-2之类的,原因参考WordPress Sidebar命名问题

‘name’ – 选的比较有意义即可,能一下让使用者明白这个sidebar位于哪些模板的哪个位置;

‘description’ – 如果你没能用名字把sidebar介绍好,那就给它一个更详细的描述吧

通过这个方法你可以注册任意多个sidebar,但id必须是独一无二的,名字也不能重复。

你可以将定义的sidebar放到文章首页定制化中自定义的home.php中,通过下面方法调用

/** Register widget areas */
genesis_register_sidebar( array(
    'id'            => 'after-post-ad',
    'name'          => __( 'After Post Ad', 'themename' ),
    'description'   => __( 'This is a widget area that can be placed after the post', 'themename' ),
) );

home.php的内容就变成下面这样

<?php
get_header();

do_action('genesis_before_content_sidebar_wrap');
?>
<div id="content-sidebar-wrap">
    <?php do_action('genesis_before_content'); ?>
    <div id="content" class="hfeed">
        <?php if (!dynamic_sidebar('After Post Ad')) : endif ?>
    </div>

    <!-- end #content -->
    <?php do_action('genesis_after_content'); ?>
</div>

<!-- end #content-sidebar-wrap -->
<?php
do_action('genesis_after_content_sidebar_wrap');

get_footer();

如果你访问后台->外观(Appearance)->小工具(Widget),你会发现多了一个叫After Post Ad的sidebar,现在我往这个widget里拖拽Search和Calendar小工具,那么首页就会变成这样

快来自己尝试一下吧。