很多人喜欢在不同的页面显示不同的侧边,事实上这的确非常管用,比如你为了访客体验不想把广告显示在首页而更愿意放在文章页,这就非常需要把index.php和single.php的侧边区别起来.有了上一篇做基础,这个实现起来其实非常简单.很多博主采取的是在functions.php中的“register_sidebar(“后添加数字,这种方法也非常好,但是对于三栏模板需要将侧栏的两列分别建立不同的sidebar文件,那么要实现不同的侧栏你需要建立4个sidebar.相比这个方法,我更加喜欢直接在functions.php中直接添加sidebar定义.下面拿我修改的那个三栏模板作为示例:
(****以下代码在Feed阅读器中可能会有问题,如果感兴趣建议到原网页.)
1.修改functions.php.
三栏模板本身应该只有两个sidebar定义,现在我们再给它添加两个.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | < ?php // 默认的侧边栏定义 if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'Left Sidebar', 'before_widget' => '<li>', 'after_widget' => '</li>', 'before_title' => '<h2>', 'after_title' => '</h2>', )); if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'Right Sidebar', 'before_widget' => '<li>', 'after_widget' => '</li>', 'before_title' => '<h2>', 'after_title' => '</h2>', )); //以下为文章页侧边栏定义. if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'Left Sidebar2', //name值自行定义 'before_widget' => '<li>', 'after_widget' => '</li>', 'before_title' => '<h2>', 'after_title' => '</h2>', )); if ( function_exists('register_sidebar') ) register_sidebar(array( 'name' => 'Right Sidebar2', //name值自行定义 'before_widget' => '<li>', 'after_widget' => '</li>', 'before_title' => '<h2>', 'after_title' => '</h2>', ));?> |
2.新建一个sidebar2.php(文件名可以自己取,我只是举个例子),复制默认的sidebar.php中的所有文件并粘贴进来(当然是已经支持Widgets的那个),并修改下面的代码中的#7为Functons.php文件中新加入的Sidebar的name.
1 2 | < ?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('#7') ) : else : ?> < ?php endif; ?> |
所以我的模板中的两段代码应该为:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <div id="sidebar"> <div id="sidebar_r">//右侧栏 <ul> < ?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('Right Sidebar2') ) : else : ?> ...... < ?php endif; ?></ul> </div> <div id="sidebar_l">//左侧栏 <ul> < ?php if ( function_exists('dynamic_sidebar') && dynamic_sidebar('Left Sidebar2') ) : else : ?> ...... < ?php endif; ?></ul> </div> </div> |
3.修改single.php文件.
在single.php中找到< ?php get_sidebar(); ? >,删除之,改为:
1 | < ?php include_once("sidebar2.php "); ?>. |
保存退出.如果你还想修改Page.php等页面的话,可以使用同样的方法.
登入后台的侧边栏区块,你就会发现已经出现了4个Widgets,给它们分别添加不同的内容,就可以实现在不同的页面显示不同的侧边栏了.
4.总结:
在网上流传比较广泛的是将functions.php中的“register_sidebar(array(“改为“register_sidebar(4, array(“的模式,并创建4个sidebar文件,具体方法好多人都有介绍,推荐一个:
这种方法其实更加专业,但是我觉得不如我上面说的直观和傻瓜化.
我本来想把DiggLife的模板也改为这种模式,但是还没有想好该放什么东西,本来目前的侧边该怎样放我一直都在犹豫呢.


8 Comments:
现在就很酷啊!
你的方法也很棒!
而且跳过了有些主题无法通过修改 array 的数值来设置多个sidebar widget。
还有就是博主的 code 引用蛮漂亮的,是用什么插件实现的呢?如果博主手上有现成的插件,希望可以发一份给我
THX~~
———
摩摩诘:
呵呵,拜读了你那篇文章之后受了很大启发,所以才有这篇日志的.
那个Code引用插件叫 WP-dp.SyntaxHighlighter,地址是:
http://www.dreamprojections.com/SyntaxHighlighter/
我用的模板直接就是不同显示的…
ps: 这个贴代码的插件不错,高亮,行选
———
摩摩诘:
其实我很早就想知道你那个模板是怎么实现的,不过一直忘记.昨天修改另外一个模板的时候心想一不做二不休,干脆把两个问题一块解决了.
呵呵,拜读谈不上,我这篇文章只是从网络上学习到关于 WP widget 的经验总结,大家都是 WP 爱好者,以后有空多多交流~~ 先订阅一个再说
那个插件我装上去就出错,不知道怎么搞的…. 算了,就继续使用 coolcode 了..
看上去不错的 收藏下来试试先
我是yo2的用户,不支持添加模板文件呢。但是我的模板有一个footer.php文件,定义页脚的,就给我全部掏空,加入siaebar.php的心脏,改single.php中的get_sidebar为get_footer 就 可以啦。
正在试………………难度很大啊…………已经失败一次了…………
不过失败是成功的娘………………加油~!~!~
你好~我想问下你的页面底下的这个Google社交栏工具条是怎么加的?我我在添加这个Google社交栏的时候,他给出的有两段代码,我不知道这两段代码分别放到哪里?你能教教我吗?谢谢!
One Trackback