6 Comments April 9th, 2007 by Xu Yiyang

依照惯例,Special Edition是unnamed的精简稳定版本,包括原版的核心功能,并且有着更好的兼容性和更小的体积(53Kb)。这个版本用于替代远古时代的Special Edition 0.5并且不再支持WordPress 2.0.x。
最重要的,我希望Special Edition的全新设计能够为各位带来不一样的体验。
This is a theme modification, containing the core functions of unnamed, light weighted and with better compatibility. This version requires WordPress 2.1+.
Unnamed Project Page
Download Unnamed Special Edition 1.0
7 Comments April 1st, 2007 by Xu Yiyang
三、模板文件解析
首先提一下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。
接下来的过几天交完论文终稿再写吧。。。
参考文献:
- Template Tags: bloginfo
- Hooks: wp_head
- The Loop
16 Comments March 27th, 2007 by Xu Yiyang
我决定静下心来,好好的写一些东西,最好能把我这一年多来设计WordPress主题的体验记录下来,和大家分享。
这会是几篇半教程性质的手记,估计内容会很杂,也很难写成体系,所以我打算写到哪算哪。有兴趣的随便看看吧,兴许能找到一两个有用的点子。
今天先扯开发WordPress主题可能用到的工具和资源,并简单介绍一下WordPress主题的结构……我废话又多了,开始吧。
一、开发工具及相关资源
二、WordPress主题结构——模板文件及其调用
传统的网页通常使用HTML来控制页面结构,并通过样式表(CSS)来控制页面的表现。WordPress也使用样式表来控制网页的表现,但其页面内容则是由几个模板文件(Template Files)共同构建而成的。其中一些模板文件是全局性的,比如头信息和页脚模块,而有一些则只用于特殊场合。
这些模板文件通常由XHTML和简单的PHP代码构成,只要你有一些基本的网页知识,并且知道什么是“if…else…”,就不用太担心代码问题——当然,掌握一些基本的XHTML、CSS、PHP和Javascript知识,还是大有好处的。在文章中,我会尽量少涉及模板之外的代码,很多东西,不是拿来谈论的,比如网页标准,我们遵循它,使用它,就可以了。
我们习惯性的将网页分解为 “头信息(Header)”、“内容(Content)”、“侧边栏(Sidebar)”、“页脚(Footer)”这几个主要部分,而这也是主要WordPress模板文件划分的依据。通常一个普通的WordPress主题会包含一下几个模板文件:
- 样式表:style.css
- 头信息模块:header.php
- 内容模块:index.php、page.php、single.php、archive.php、search.php、404.php
- 侧边栏模块:sidebar.php
- 页脚模块:footer.php
- 评论模块:comments.php
- 搜索表单模块:searchform.php
其中,style.css用于定义主题的外观;头信息模块定义了网站的基本信息,比如标题、关键词等等;站点的主要内容使用index.php输出,page.php用于输出分页内容,而single.php则被用于单篇汇整,404模块用于返回站点404错误信息;sidebar.php包含了网站的一些次要内容,比如订阅、分类、链接等等;页脚信息通常会包含站点的版权等相关信息;而其他模块所含内容视情况而定,比如comments.php用于控制评论输出,而searchform.php则包含了搜索表单。当然,WordPress也允许用户调用自己定义的模块。
注意:当archive.php和search.php不存在时,WordPress会自动调用index.php中的内容,因此这两个模板文件已经不是必需的了,在此不作介绍。
在WordPress中,主要的模板文件都有自己专用的调用代码:
- style.css:<?php bloginfo(’stylesheet_url’); ?>
- header.php:<?php get_header(); ? >
- sidebar.php:<?php get_sidebar(); ? >
- footer.php:<?php get_footer(); ? >
- comments.php:<?php comments_template();? >
而其他辅助模块则可以使用相关语句来调用,比如你要在侧边栏里调用搜索模块,就可以在sidebar.php的相关位置输入:
<?php include (TEMPLATEPATH . '/searchform.php'); ?>
该语句也可用于调用你自己创建的模板文件。
举个例子,比如在index.php中,我们需要头信息、正文、侧边栏和页脚信息,那么该模板的结构就是:
<?php get_header(); ?>
…主体内容…
<?php get_sidebar(); ?>
<?php get_footer(); ?>
先写这么多吧,下回再续-_-!
参考文献:
- Stepping Into Templates
- 海豚的WordPress Theme教程 part1
30 Comments March 20th, 2007 by Xu Yiyang
导师让三月份交毕业论文,所以这段时间基本没有更新。现在这个版本是月初就定型的,拖到今天又改了几处,才放出来。
改动包括:
- 全部使用WordPress 2.1的模板标签,因此不再支持WordPress 2.0.x。
- 取消了侧边栏位置的选项。
- 重新设计的外观(如果你喜欢原样式,在后台把背景图片选项的勾去掉即可)。
Changes:
- Update with WP 2.1’s template tags and no longer support wordpress 2.0.x.
- Remove the option of sidebar position.
- Redesign the appearance.
Unnamed Project Page
Download Unnamed 1.1.3
下载Unnamed简体中文语言包
Update 2007-03-20:
9 Comments March 2nd, 2007 by Xu Yiyang
老版本的Sidebar Widgets插件在WordPress 2.1下可能会出现Drag & Drop失效的问题,应该是插件本身的bug以及和WordPress 2.1的兼容性问题(可能是老版本插件和wp 2.1的scriptaculous存在冲突)造成的。
请参看WordPress官方论坛的相关讨论:
Widget Drag and Drop doesn’t work
Widget dragging not working due to function missing
讨论中的建议是下载2007年2月10日的最新版本。