WordPress主题制作全过程(七):制作sidebar.php

Ludou

     制作好了header.php 和 footer.php ,今天我们来制作侧边栏sidebar.php。由于侧边栏的可定制性实在是太强了,所以本节内容比较难,我讲解起来也比较困难,有些内容会被略掉!

     作为各个页面公用的侧边栏,我们还是像制作header.php 和 footer.php那样,从index.php中提取侧边栏,放到sidebar.php。好,现在在你的主题目录Aurelius下新建文件sidebar.php,从index.php中提取一下代码,放到sidebar.php中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    <!-- Column 2 / Sidebar -->
    <div class="grid_4">
        <h4>Catagories</h4>
        <ul class="sidebar">
            <li><a href="">So who are we?</a></li>
            <li><a href="">Philosophy</a></li>
            <li><a href="">History</a></li>
            <li><a href="">Jobs</a></li>
            <li><a href="">Staff</a></li>
            <li><a href="">Clients</a></li>
        </ul>
        <h4>Archives</h4>
        <ul class="sidebar">
            <li><a href="">January 2010</a></li>
            <li><a href="">December 2009</a></li>
            <li><a href="">Novemeber 2009</a></li>
            <li><a href="">October 2009</a></li>
            <li><a href="">September 2009</a></li>
            <li><a href="">August 2009</a></li>
        </ul>
    </div>
    <div class="hr grid_12 clearfix">&nbsp;</div>

     再用文本编辑器打开index.php、archive.php、page.php和single.php,删掉以上类似代码,改成:

1
<?php get_sidebar(); ?>

     好,现在打开你的博客主页,看看我们制作的主题是否还可以正常工作。现在我们的侧边栏还都是静态的代码,大家可能都知道在WordPress后台 – 外观 – 小工具,那里可以拖动你想要的栏目到侧边栏,但是我们的主题目前还不支持这个功能。现在就让我一起来制作完整的sidebar。

     为了适应WordPress程序,我们还要对sidebar.php做一些微调,下载新的样式表style.css,替换Aurelius目录下的style.css,点此下载style.css

     开始sidebar.php的制作,我们将在侧边栏放置4个栏目。在初始状态下,也就是你没有在侧边栏放置任何小工具的情况下,这4个栏目自上而下为分类目录、最新文章、标签云和文章月存档。现在将sidebar.php中所有代码删除,改成:

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
41
42
    <!-- Column 2 / Sidebar -->
    <div class="grid_4">
       
    <?php if ( !function_exists('dynamic_sidebar')
                        || !dynamic_sidebar('First_sidebar') ) : ?>
        <h4>分类目录</h4>
        <ul>
            <?php wp_list_categories('depth=1&title_li=&orderby=id&show_count=0&hide_empty=1&child_of=0'); ?>
        </ul>
    <?php endif; ?>
       
    <?php if ( !function_exists('dynamic_sidebar')
                            || !dynamic_sidebar('Second_sidebar') ) : ?>       
        <h4>最新文章</h4>
        <ul>
            <?php
                $posts = get_posts('numberposts=6&orderby=post_date');
                foreach($posts as $post) {
                    setup_postdata($post);
                    echo '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';
                }
                $post = $posts[0];
            ?>
        </ul>
    <?php endif; ?>
   
    <?php if ( !function_exists('dynamic_sidebar')
                            || !dynamic_sidebar('Third_sidebar') ) : ?>
        <h4>标签云</h4>
        <p><?php wp_tag_cloud('smallest=8&largest=22'); ?></p>
    <?php endif; ?>
       
    <?php if ( !function_exists('dynamic_sidebar')
                        || !dynamic_sidebar('Fourth_sidebar') ) : ?>                   
        <h4>文章存档</h4>
        <ul>
            <?php wp_get_archives('limit=10'); ?>
        </ul>
    <?php endif; ?>
   
    </div>
    <div class="hr grid_12 clearfix">&nbsp;</div>

     然后点此处下载functions.php放到主题目录Aurelius下,这时候你的侧边栏就可以正常工作了,在WordPress后台 – 外观 – 小工具,可以正常地拖动小工具到侧边栏了。

     好了,sidebar.php到此就制作成功了。这节内容理论的东西讲得不多,关键是我不知道怎么去表述这些东西,就算我说出来,可能你也不会太明白了。关于sidebar.php制作的技术文档:可以参考:

最后还是按照惯例,提供经过本次修改后的主题文件下:

下载此文件

WordPress主题制作全过程完整列表:

本文版权归露兜博客所有,转载引用请完整注明以下信息:
本文作者:Ludou
本文标题:WordPress主题制作全过程(七):制作sidebar.php
本文地址:http://www.ludou.org/create-wordpress-themes-sidebar.html

露兜博客博主,男生,业余Web程序员,儒家思想受益者。文采不佳,不喜欢聚光灯,不喜欢吹牛,不喜欢无序的做事方式。闲时喜欢写些代码自娱自乐,并在博客中分享一些个人技术经验。

标签: ,

12 条评论

我来说两句
  1. Hos

    之前一直在寻找怎么制作主题, 昨天发现你这隔两天就更新觉得站长挺用心的~赞一个~:D
    但希望能在后面的教程里讲的再细致点哈~比如这个sidebar就有点简单了…加油~:D

  2. 青刀刀

    我学到这章,又有问题麻烦您啦。
    这章教程实在有些简单,许多东西没有讲解。对于我这样新手菜鸟,看起来实在费力。

    问题:
    我现在知道“分类目录”和“最新文章”可以按照您的葫芦画我这个瓢。但是如果我想显示“分类目录”中一个子类,以及这个子类的最新内容,我该如何调用函数呢。
    比如:分类目录有A,B,C
    A里面有1,2,3,4,5的文章标题。
    B里面有6,7,8的文章标题
    C里面有9,10的文章标题

    虽然8,9,10是最新文章,但是不再A类里
    我现在想要在sidebar里画出一个div只显示A类里的1,2,3,4,5的标题和日期。

    我知道的wp函数和php语法实在太少,还望博主指导。
    谢谢

    • Ludou

      你可以参考这篇文章,分类相关部分:
      http://www.ludou.org/how-to-generate-related-posts-in-wordpress.html

      例如,方法二:分类相关,你将代码改成(777777为A分类的id,66为你想要显示的文章数量):

      <ul id="cat_related">
      <?php
      $args = array(
      'category__in' => array(777777),
      'showposts' => 66,
      'caller_get_posts' => 1
      );
      query_posts($args);

      if (have_posts()) :
      while (have_posts()) : the_post(); update_post_caches($posts); ?>
      <li>* <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title_attribute(); ?>"><?php the_title(); ?> – <?php the_time('Y年n月j日') ?></a></li>
      <?php endwhile; else : ?>
      <li>* 暂无相关文章</li>
      <?php endif; wp_reset_query(); ?>
      </ul>

  3. 苹果

    ludou师兄,像 <div class="hr grid_12 clearfix">这些样式都是WP自带的吗?

  4. Ludou粉丝

    Ludou好,我碰到问题,需要您的指导,问题描述:导航栏是二级深度导航栏,点击第二级导航栏,跳到相应页面,页面左侧有个垂形导航,垂形导航内容是该第二级导航父导航下所有节点,这个效果该怎么做?这个垂直导航可以做成sidebar么?怎么取第二级深度的页面?具体效果参考:http://www.nashowgroup.com/?p=166&lang=zh,就是您做的那个耐舒,左面那个垂直的导航

  5. ludou粉丝

    大师,我有这样的疑问,假如,我的首页的侧边栏和内页的侧边栏不一样该怎么调用?
    如果像wopus那样,有些分类下,分类首页和内页,该分类的侧边,footer和外面的都不一样。
    仿佛是独立的一个主题一样。
    怎么实现?O(∩_∩)O谢谢

    • Ludou

      主题目录下添加:
      sidebar-home.php
      sidebar-cats.php
      sidebar-single.php
      ….

      然后在模板中调用:
      <?php get_sidebar( 'home' ); ?>
      <?php get_sidebar( 'cats' ); ?>
      <?php get_sidebar( 'single' ); ?>
      ….

      • ludou粉丝

        不好意思,问了很多人就你能够解答。
        是这样的,就拿www.wopus.org来说:
        它的主题这个分类的 主题首页 主题侧边 主题的footer header
        还有主机这个分类的 主机首页 主机侧边 主机的footer header
        还有外面的其他页面

        这一看仿佛就是3个主题。
        按您在上面那样做了之后,通过分类的别名来让wordpress识别?
        应该有更好的方法吧?
        <?php
        if ( in_category('home') ) {
        include(TEMPLATEPATH . '/sidebar-home.php');
        }
        elseif ( in_category('single') ) {
        include(TEMPLATEPATH . '/sidebar-single.php');
        }
        else {
        include(TEMPLATEPATH . '/sidebar-home.php');
        }
        ?>
        要不麻烦您写篇日志详细讲解一下吧,我在wordpress中文论坛问过,很多都想知道。
        还有有些主题可以通过后台设置,首页侧边显示广告图片啊什么的。
        这个如何实现?
        问题有点多麻烦ludou了

发表评论

因博主长期在外地出差,您的留言可能暂时不会得到回复。

订阅评论