要实现这种功能,有三种方法,一是用插件,二是完全手写代码,三是少量代码加上WordPress自身的小工具功能。前面两种方法我以前都介绍过,可以从下面进入查看。
用插件:Widget logic让你的侧边栏与众不同
用代码:WordPress代码实现不同页面使用不同的侧边栏sidebar
现在我来说说第三种方法,用少量代码加上WordPress自身的小工具功能实现不同页面不同侧边栏。这种方法需要你的主题支持多组小工具分组,比如我这个主题支持三组,看下图中右侧部分:
如果你的主题不支持三组widget,可以通过在主题文件夹下面的functions.php文件中添加如下代码来支持:
if ( function_exists('register_sidebar') ) {
register_sidebar( array(
'name' => __( 'Sidebar Home', 'zuluo' ),
'id' => 'sidebar-home',
'description' => __( 'The sidebaer in home', 'zuluo' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h2>',
'after_title' => '</h2>',
) );
register_sidebar( array(
'name' => __( 'Sidebar Category', 'zuluo' ),
'id' => 'sidebar-category',
'description' => __( 'The sidebaer in category', 'zuluo' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h2>',
'after_title' => '</h2>',
) );
register_sidebar( array(
'name' => __( 'Sidebar Single', 'zuluo' ),
'id' => 'sidebar-single',
'description' => __( 'The sidebaer in single', 'zuluo' ),
'before_widget' => '<li>',
'after_widget' => '</li>',
'before_title' => '<h2>',
'after_title' => '</h2>',
) );
}把上面代码添加到functions.php文件中,保存之后到后台控制板刷新小工具页面,然后就可以看到右侧多了三个小工具组了。当然,如果你的主题已经有一个工具组了,可以只粘贴上面代码的第二或者第三部分,注意array数组中的“id”参数,三个工具组不能同名。如果想支持四组,复制一块代码,把id更改一下就可以了。
主题支持三个工具组之后,就可以在sidebar.php文件中加入部分判断代码,实现不同类型的页面显示不同的侧边栏了。下面是sidebar.php 文件中部分代码:
<?php
if (function_exists('dynamic_sidebar')){
if(is_home()){
if(!dynamic_sidebar('sidebar-home')) {
mysidebar();
}
}
elseif(is_category()||is_archive()){
if(!dynamic_sidebar('sidebar-category')) {
mysidebar();
}
}
elseif(is_single()||is_page()){
if(!dynamic_sidebar('sidebar-single')) {
mysidebar();
}
}
else {
if(!dynamic_sidebar('sidebar-home')) {
mysidebar();
}
}
}
else {
mysidebar();
}
?>
注意:上面代码中的mysidebar()函数是当主题不支持侧边栏调用功能的时候显示的内容。
简单解释一下上面的代码吧,代码的意思从上至下,如果支持侧边栏调用功能,则执行下面半段:如果是首页,调用sidebar-home工具组;如果是分类目录页就调用sidebar-category工具组 ;如果是内容页和单个页面,则调用sidebar-single工具组;其他类型页面默认调用sidebar-home工具组。
如果各个工具组调用不成功,测执行 mysidebar()函数 ,mysidebar()函数可以像下面这样简单定义一下:
<?php
function mysidebar() {
?>
<li><h2>最新文章</h2>
<?php query_posts( array( 'post__not_in' => get_option( 'sticky_posts' ), 'cat' =>$options['sidebar_hide'], 'showposts' =>'6' ) ); ?>
<ul>
<?php while (have_posts()) : the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" target="_blank">
<img src="<?php echo get_the_thumb($post->ID); ?>">
<p><?php the_title(); ?></p></a>
</li>
<?php
endwhile;
// Reset Query
wp_reset_query();
?>
</ul>
</li>
<?php } ?>
保存sidebar.php文件,最后记得在wordpress后台往三组工具组中拖动几个小工具进去,然后在前台刷新页面就可以看到效果了。
没有评论:
发表评论