WordPress Themes 设计手记(二)
三、模板文件解析
首先提一下WordPress的模板标签(Template Tags)。WordPress提供的模板标签十分丰富,你几乎可以利用它们把主题做成任何你想要的样子。了解并掌握重要标签的形式和用法是进行WordPress主题开发的重要环节。WordPress Codex给出了大部分Template Tags的说明,我就不做重复劳动了。
进入正题,我们以WordPress Default 1.6为例,尽可能详细的分析模板文件中所用到的相关代码及技巧。
3.1 Header.php
我们从头开始好了。打开Header.php,在这里我们可以看到不少常用的模板标签,其中<?php language_attributes(); ?>是WordPress 2.1新增加的标签,用于在头部输出“lang=’zh-CN’”这样的语言标记,站点语言可以在后台定义。
在这里,你可以看到<?php bloginfo() ?>是一个被使用多次的模板标签,用于显示一些站点的相关信息,比如标题、网页类型、字符集、样式表链接、Rss链接等等。其用法是:
<?php bloginfo('show'); ?>
Show是你想要显示的内容,可以是:name、description、url、charset、stylesheet_url等等,具体请见http://codex.wordpress.org/Template_Tags/bloginfo
另外,<title> </title>之间的代码用于输出网页的标题,先看WP默认模板的标题输出:
除了用<?php bloginfo(’name’); ?>输出Blog的名字之外,该模板还使用了”is_single()”函数来判断当前页面是否是单篇汇整页面,如果是,则输出<?php if ( is_single() ) { ?>…<?php } ?>之间的语句。
这是一个非常常用的技巧,它允许你使用一段代码控制不同页面的输出效果,简便且灵活。除了is_single()之外,常用的还有:is_home()、is_page()、is_paged()、is_archive()、is_search()、is_404()、is_tag()。意思都很好理解,is_paged()就是某个存档的除第一页外的后n页(这个解释很别扭,俗称“上一页”…)。
如果非再要举个例子,那就来一个豪华的,K2的theloop.php。有别于普通WP模板按网页结构和存档性质划分模板文件的方法,K2使用theloop.php来定义全部页面的正文内容输出,主要手段就是通过上面提到的那些函数来判断当前页面的性质以输出相应的内容。尽管原理很简单,但这种处理模板文件的形式大大简化了代码编辑工作,因为你只需要通过一个模板文件中的几行代码就可以改变几乎任何一个页面上的内容。
如果你想要某页面不显示某些内容,只要在is前加上感叹号表示否定即可,例如:
<?php if ( !is_home() ) { ?>…<?php } ?>
最后,在</head>之前,一定会有一个<?php wp_head(); ?>,wp_head()用于获取一些插件或者主题所需的功能,这些功能通常是在后台就定义好的,比如在一些主题和插件里你可以看到add_action(’wp_head’, ‘函数名’);这样的语句。
大部分主题将导航栏也放在header.php中,就简单提一点:WordPress对当前页定义的CSS Class是current_page_item,而其他页面则是page_item,也就是说,你可以在CSS中定义current_page_item和page_item以区分当前页和其他页面的样式。比如:
li.current_page_item {
...
}
li.page_item {
...
}
wp_list_pages()也是一个很有讲究的模板标签,具体用法参见Codex。
接下来的过几天交完论文终稿再写吧。。。
参考文献:
This entry is filed under themes, tutorial, Wordpress. You can follow any responses to this entry through RSS 2.0 . You can leave a response, or trackback from your own site.
小圈,我最近做了一个China Blogger Map,CBM诚挚地邀请你前往登记博客,登记地址 http://angelived.org/cbmap/
呵呵,一定要去啊
你好,我用你的模板,怎么显示有问题,www.lichzy.cn
lichzy@gmail.com
http://photo1.yupoo.com/20070404/182713_384731787_dravjtix.jpg
显示成这个样子!
to lichzy:
这种情况一般跟服务器环境有关,因为unnamed用了php作为css文件,还是有点挑食的。
但我看了你用的dh,我以前也用,unnamed在dh的空间上应该没问题的。
从你的图片上看似乎用了2栏的style,而原来的css无法加载,不知道你是否改了永久链接样式或者其他什么,仅凭图片我没法多做解释,希望你能对描述的更清楚一些。
已经搞定了!谢谢了!
[...] 原文地址:http://xuyiyang.com/2007/04/01/wordpress-theme-design-notes-part2/ [...]
继续关注
[...] Themes 设计手记 WordPress Themes 设计手记(一) WordPress Themes 设计手记(二) WordPress Themes 设计手记(三) WordPress Themes 设计手记(四) WordPress Themes [...]