存档

文章标签 ‘wordpress侧边栏’

WordPress的侧边栏优化 - 增加多个widget

2008年3月7日 5 条评论

WordPress侧边栏Sidebar的优化

为了避免内容过多的重复或类似,我们需求不同的页面可显示不同的侧边栏。这样既有利于访问者的浏览体验,也有利于搜索引擎的收录,避开因为内容过于类似而排除收录的危险。

>>本文为WoodsWeb原创,如需转载,请申明出处及链接。

关于WordPress侧边栏的优化改造,网上文章可搜出一箩筐,但很多都写得过于复杂了,而且重点部分却没了后续。这里以www.woodsweb.cn为例,呈现一下几个主要程序的修改方法。

1. 注册多个侧边栏Sidebar

你需要网站的侧边栏有几种不同的呈现方式就注册几个,一般3个就足够了,首页Home/日志页Single/存档页Archive, 还有其他的比如搜索页,标签页等可以套用Single或是Archive的侧边栏风格,没必要全部都是独立风格。

修改文件:主题文件夹下的"functions.php"

<?php
if ( function_exists('register_sidebar') )
    
{
    
register_sidebar(array('name'=>'Left Sidebar Home'));
    
register_sidebar(array('name'=>'Left Sidebar Single'));
    
register_sidebar(array('name'=>'Left Sidebar Archive'));
    
    
register_sidebar(array('name'=>'Right Sidebar Home'));
    
register_sidebar(array('name'=>'Right Sidebar Single'));
    
register_sidebar(array('name'=>'Right Sidebar Archive'));   
    
}
?>

只需要如上写functions.php就可以注册左右各3个侧边栏了,如果是两栏的或三栏以上的,同理。

2. 控制不同侧边栏在不同页面上呈现
修改文件:主题文件夹下的sidebar.php

<ul class="leftList">
    
<?php if ( function_exists('dynamic_sidebar') )
    
{
      
if (is_home() && dynamic_sidebar('Left Sidebar Home'));
      
elseif (is_single() && dynamic_sidebar('Left Sidebar Single'));
      
elseif ((is_archive() || is_search()) && dynamic_sidebar('Left Sidebar Archive'));
      
else dynamic_sidebar();
    
}
            
?>
     </ul>

其中,Left Sidebar Home,Left Sidebar Single,Left Sidebar Archive 分别是对应你在functions.php中注册的3个左侧边栏的名称。以上是左侧边栏的判断调用,找到对应代码如上修改便可。右侧边栏部分同理。

--------------------------------------
很多文章大多也提到了前面两步,只是可能比较繁杂而已。但接下来,当你进入后台Widgets管理界面时,是不是发现一个严重问题?Widget数量不够,一个widget只能用在一个sidebar上,如果三个左侧边栏上都想放上"最新文章"的widget,该怎么办呢?Wordpress默认只有标签云,分类,文本和RSS这四个widget可以增加数量(有下拉列表可以选择),那其他的众多widget怎么办呢?

3. 增加你喜爱的widget的数量

Woodsweb.cn提供给您一个简单的注册多个相同功能widgets的方法!

修改文件:/wp-includes/widgets.php
在接近末尾的1130行左右,找到如下语句:

wp_register_sidebar_widget('pages', __('Pages'), 'wp_widget_pages', $class);
wp_register_widget_control('pages', __('Pages'), 'wp_widget_pages_control', $dims150);

将其修改为如下形式:

wp_register_sidebar_widget('pages', __('Pages'), 'wp_widget_pages', $class);
//注册多个相同功能的widgets
wp_register_sidebar_widget('pages02', __('Pages'), 'wp_widget_pages', $class);
wp_register_sidebar_widget('pages03', __('Pages'), 'wp_widget_pages', $class);
wp_register_widget_control('pages', __('Pages'), 'wp_widget_pages_control', $dims150);

其中,pages02,pages03就是新注册的2个相同功能的"页面"widget,如果想注册更多,那就再往后添加便是。当然,名称可由您喜好自定义。

如果想增加其他widget的数量,方法同上,如:

$class['classname'] = 'widget_archives';
wp_register_sidebar_widget('archives', __('Archives'), 'wp_widget_archives', $class);
//注册多个相同功能的'存档'widgets
wp_register_sidebar_widget('archives02', __('Archives'), 'wp_widget_archives', $class);
wp_register_sidebar_widget('archives03', __('Archives'), 'wp_widget_archives', $class);
wp_register_widget_control('archives', __('Archives'), 'wp_widget_archives_control', $dims100);

有的widget可能并非来自/wp-includes/widgets.php文件,也有很多人把自己喜欢的功能整合成插件,通过widget的方式来调用,这也是所谓的让widget变相地支持PHP的方法。比如,最新文章,随机文章,最新评论等这些中文Wordpress工具箱里包含的功能,有人直接打包成widget并做成了插件的方式,如mulberrykit_widget,你可以在插件目录找到并修改mulberrykit_widget.php文件的部分内容如下:

register_sidebar_widget('Most_Comments', 'most_comments_widget');
//注册多个相同功能的Most_Comments Widgets
register_sidebar_widget('Most_Comments_02', 'most_comments_widget');
register_sidebar_widget('Most_Comments_03', 'most_comments_widget');
register_widget_control('Most_Comments', 'most_comments_widget_control', 350, 200);

其他功能的widgets需要注册多个的话,方法同上。

这样,当你再度进入Widgets管理界面时,是不是发现widget多到你的脸都笑花了?随心所欲地拖曳吧!什么页面要什么样的WordPress侧边栏,从此完全自定义。

-------------------------------------------------------------------------
woodsweb.cn 版权所有,如需转载,请声明出处并加原文链接,否则违者必究!

VN:F [1.6.1_878]
请您给此文打分:
Rating: 2.8/5 (3 votes cast)
VN:F [1.6.1_878]
Rating: +1 (from 1 vote)