如何自定义WordPress主题:侧边栏

上篇文章中我们优化完成了头部,接下来要讲解的为侧边栏,其实自从WordPress系统整合了Widget功能后,侧边栏修改起来就方便多,大多数的主题都支持Widgets功能,当然如果你下载的主题并不支持Widgets功能的话,你可直接联系主题作者,或若是你懂一点点的PHP和E文的话,也可自己给主题添加Widget功能,在这里首先讲解下Widget的用法,而后将为您简单的讲解下怎样让你的主题支持Widgets的方法。

首先进入后台点击Design–>Widgets:

widgets

选择你想要添加的项目,点击侧边的”add”,所选项目会自动出现在左边,当然你可拖动左边的项目来排序。如果你想在侧边栏添加广告的话,可直接添加一个”TEXT”项目,自定义其标题,并在里面输入广告代码即可,最后别忘记了点击保存即”Save”按钮。没错,有了Widget功能后,修改侧边栏就是这么简单。当然如果你懂一些WordPress的Loop的话,能让你的侧边栏看起来更酷点,比如说在不同页面让侧边栏显示不同的内容,其具体的方法我们下篇文中再作讨论。

如果你发现下载的主题并不支持Widgets功能,而你也无法联系到作者的话,那么我们只能自己手动修改下主题,让其支持Widges功能,在这里我简单的讲解下。貌似看起来有点复杂,其实只要几行代码即可搞定。首先在主题的functions.php中(如果你发现主题中并没有functions.php文件的话,自己新建个即可。),添加以下代码:

<?php
if ( function_exists('register_sidebar') )
    register_sidebar(array(
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '<div class="title">',
        'after_title' => '</div>',
    ));
?>

在这里简单的讲解下,其中’before_widget’ =>”是指在你侧边栏项目前的HTML标签,比如说你的侧边栏的代码类似与一下情况:

<div id="sidebar">
 <li id="about">
  <h2>About</h2>
  <p>This is my blog.</p>
 </li>
 <li id="links">
  <h2>Links</h2>
  <ul>
   <li><a href="http://example.com">Example</a></li>
  </ul>
 </li>
</div>

这时候你需在里面添加

<li>

标签,添加后类似于:

'before_widget' =>'<li>'

同理’after_widget’ =>则指项目结尾的标签,在这里只需添加

</li>

即可。

当然很多情况下侧边栏的前后并没有任何标签,这时候我们只需留空即可。接下来’before_title’ =>”则是指项目标题前的HTML标签,以上面的代码为例的话,则为

'before_title' =>'<h2>'

同理后面则为

'after_title' ='<h2>'

接下来编辑sidebar.php,在侧边栏标签后,也就是类似于

<div id="sidebar">

添加以下代码:

<?php if ( !function_exists('dynamic_sidebar')
        || !dynamic_sidebar() ) : ?>

并在HTML标签结束前添加

<?php endif; ?>

好了,至此你的主题已经能完美支持WordPress自带的Widgets功能。后面的讲解对于WordPress新手来说着实有点不易明白,有什么问题也可随时联系我,呃,对于WordPress高手来说,这些应该都是小儿科了,文章中有什么漏洞和错误的话还望指出来。

此篇文章由 housne 发表于 2008年11月25日,点击此处发表评论,或者订阅本文

« »

6 Comments»

  1. memo 发表于 2008年11月25日

    不知道这么晚你还在不?晚上有事出去了。

  2. 风云:) 发表于 2008年12月2日

    你好,我想把“分类”做到Widget里去应该怎么做呢?

    想把某个分类独立出来放在Widget,让Widget显示这个分类的一张图片和一部分文字。

    谢谢你的回答:)

  3. housne 发表于 2008年12月2日

    @风云:): 你好,wp的widget中有自带的分类模块,只需添加过来就行,至于为分类添加图片和描述则需自行编辑sidebar.php,不过你可以通过添加一个TEXT文本模块,在里面添加html来达到次目的。

  4. thirteen 发表于 2008年12月9日

    这个有点问题,参数里少了个注册的侧边栏数

    ”,
    ‘after_widget’ => ”,
    ‘before_title’ => ”,
    ‘after_title’ => ”,
    ));
    ?>

  5. thirteen 发表于 2008年12月9日

    <?php
    if ( function_exists('register_sidebar') )
    register_sidebar(array(
    'before_widget' => '',
    'after_widget' => '',
    'before_title' => '<div class=”title”>',
    'after_title' => '</div>',
    ));
    ?>

  6. housne 发表于 2008年12月9日

    @thirteen 呵,其实自己不懂PHP,这个是官方给出的代码示例。

Leave a Reply

称呼//Name (必填)

邮箱//Email (必填)

网站//website (选填)