WordPress主题制作全过程(七):制作sidebar.php
制作好了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"> </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"> </div> |
然后点此处下载functions.php放到主题目录Aurelius下,这时候你的侧边栏就可以正常工作了,在WordPress后台 – 外观 – 小工具,可以正常地拖动小工具到侧边栏了。
好了,sidebar.php到此就制作成功了。这节内容理论的东西讲得不多,关键是我不知道怎么去表述这些东西,就算我说出来,可能你也不会太明白了。关于sidebar.php制作的技术文档:可以参考:
最后还是按照惯例,提供经过本次修改后的主题文件下:
WordPress主题制作全过程完整列表:
- WordPress主题制作全过程(一):基础准备
- WordPress主题制作全过程(二):主题文件构成
- WordPress主题制作全过程(三):HTML静态模板制作
- WordPress主题制作全过程(四):小试牛刀
- WordPress主题制作全过程(五):制作header.php
- WordPress主题制作全过程(六):制作footer.php
- WordPress主题制作全过程(七):制作sidebar.php
- WordPress主题制作全过程(八):制作index.php
- WordPress主题制作全过程(九):制作single.php
- WordPress主题制作全过程(十):制作comments.php
- WordPress主题制作全过程(十一):制作page.php
本文版权归露兜博客所有,转载引用请完整注明以下信息:
本文作者:Ludou
本文标题:WordPress主题制作全过程(七):制作sidebar.php
本文地址:http://www.ludou.org/create-wordpress-themes-sidebar.html

之前一直在寻找怎么制作主题, 昨天发现你这隔两天就更新觉得站长挺用心的~赞一个~:D
但希望能在后面的教程里讲的再细致点哈~比如这个sidebar就有点简单了…加油~:D
谢谢你的建议,我会努力的。
我学到这章,又有问题麻烦您啦。
这章教程实在有些简单,许多东西没有讲解。对于我这样新手菜鸟,看起来实在费力。
问题:
我现在知道“分类目录”和“最新文章”可以按照您的葫芦画我这个瓢。但是如果我想显示“分类目录”中一个子类,以及这个子类的最新内容,我该如何调用函数呢。
比如:分类目录有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语法实在太少,还望博主指导。
谢谢
你可以参考这篇文章,分类相关部分:
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>
ludou师兄,像 <div class="hr grid_12 clearfix">这些样式都是WP自带的吗?
不是。自己写的html代码,自己定义的css类。
Ludou好,我碰到问题,需要您的指导,问题描述:导航栏是二级深度导航栏,点击第二级导航栏,跳到相应页面,页面左侧有个垂形导航,垂形导航内容是该第二级导航父导航下所有节点,这个效果该怎么做?这个垂直导航可以做成sidebar么?怎么取第二级深度的页面?具体效果参考:http://www.nashowgroup.com/?p=166&lang=zh,就是您做的那个耐舒,左面那个垂直的导航
nashowgroup侧边栏都是文章标题,要想获得某个分类下的文章,可以用
WP_Query:
http://codex.wordpress.org/Function_Reference/WP_Query
或者get_posts:
http://codex.wordpress.org/Template_Tags/get_posts
大师,我有这样的疑问,假如,我的首页的侧边栏和内页的侧边栏不一样该怎么调用?
如果像wopus那样,有些分类下,分类首页和内页,该分类的侧边,footer和外面的都不一样。
仿佛是独立的一个主题一样。
怎么实现?O(∩_∩)O谢谢
主题目录下添加:
sidebar-home.php
sidebar-cats.php
sidebar-single.php
….
然后在模板中调用:
<?php get_sidebar( 'home' ); ?>
<?php get_sidebar( 'cats' ); ?>
<?php get_sidebar( 'single' ); ?>
….
不好意思,问了很多人就你能够解答。
是这样的,就拿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了
1、关于多个sidebar,没有想到其他更好的方法
2、关于后台设置,请搜索:WordPress 主题 选项