设置分类页面
简介
WordPress 1.5引入“主题”功能后,用户可以轻松地为自己的博客改头换面。例如,访问者点击网站上某个分类链接时,浏览器会跳转到该分类的日志存档页面,所有日志按时间顺序排列,列表最上方是最新日志,最下方则是发表时间最早的日志。我们可以用不同的方式来显示这些日志,可以显示整篇日志内容,也可以只显示摘要,还可以显示一些其它信息(比如标题、类别、发表日期、最后修改时间等)。每个主题对分类页面的设置都有所不同,有时我们可能希望改变所用主题对分类页面的设置。
本文将向大家介绍怎样设置访问者所看到的分类页面,其中涉及主题和模板文件的使用,不了解主题和模板文件的用户可以参考WordPress主题的使用和初识WordPress模板。
选择模板文件
要设置用户所访问的分类页面,首先要判断应该使用主题中的哪个模板文件来显示分类页面上的文章, 这就是所谓的模板层级。
分类页面的层级相对简单。我们假设当前分类页面的类别ID是6。根据模板层级的规定,WordPress会在当前主题文件中按顺序查找以下四个文件,选择最先查找到的模板文件进行操作:
- category-6.php
- category.php
- archive.php
- index.php
也就是说,如果目前没有category-6.php文件,WordPress会往下查找category.php 文件,以此类推。
如果我们希望改变类别ID为6的页面目前的样式(并且让该页面和其它页面也不相同),首先要创建一个category-6.php文件。 如果希望分类页面不同于存档页面,就要创建或者修改category.php文件。 如果希望更改存档页面的样式,可以创建archive.php文件。 更改Index.php文件会对整个博客产生影响。
最好通过复制层级中向下相邻文件的内容来创建新文件。 例如,我们可以复制category.php文件里的内容来创建caterogy6.php文件,如果没有category.php文件,向下查找archive.php文件,以此类推。
示例
决定好在主题中所使用的模板文件后,我们就该修改文件以显示分类页面的样式了。下面我们来看几个示例。 这些示例中“Edit your template file”中的template file是指我们决定在主题中使用的模板文件。
为分类页面添加文本
在日志上方显示静态文本
假设我们现在需要在分类页面日志列表的上方显示一些静态文本。 这里静态文本是指内容不随类别和日志类型而变的文本。 我们要在 模板文件的主循环上方插入以下代码以创建静态文本:
<p> This is some text that will display at the top of the Category page. </p>
为不同分类页面显示不同文本
我们还可以在访问者访问不同分类页面时显示不同文本。 首先要在category.php文件中添加默认文本,然后为每个需要特殊文本的分类页面创建category-#.php文件。
这会在主题文件夹中生成很多文件,我们可以在主循环之外使用以下代码避免这一情况出现:
<?php if (is_category('Category A')) { ?> <p>This is the text to describe category A</p> <?php } elseif (is_category('Category B')) { ?> <p>This is the text to describe category B</p> <?php } else { ?> <p>This is some generic text to describe all other category pages, I could be left blank</p> <?php } ?>
然后我们判断目前是否在Category A页面,如果是,显示该页面文本的前一部分;如果当前不在Category A页面,继续判断是否在Category B页面。如果在,显示该页面文本的前一部分,如果既不在Category A页面也不在Category B页面上,显示默认文本。
在存档首页显示特定文本内容
有时某个类别中的日志很多,我们可能要分页显示(可以在博客管理界面的Blog Reading(阅读)选项)该类别的日志存档。 我们可以只在该类别日志存档的首页显示静态文本,也可以为后页显示不同的文本。
要达到这样的效果,我们要用到PHP的if语句,这个语句可以判断WordPress变量$paged的值($paged等于页数: 1代表该分类日志存档第一页,2则表示该分类日志存档第二页,以此类推。) 这听起来可能有点复杂,但其实并不难理解。 我们只要将以下代码插入主循环上方:
<?php if ( $paged < 2 ) { ?> <p>Text for first page of Category archive.</p> <?php } else { ?> <p>Text for subsequent pages of Category. Can be left out.</p> <?php } ?>
类别名称
我们还可以在页面顶端显示相应的类别名称。 如果我们的模板中还没有类别名称信息,可以在主循环上方插入以下代码:
<p>Category: <?php single_cat_title(); ?></p>
更改日志的显示方式
摘要VS.全文
在分类日志存档上显示日志摘要而不是全文,可以减少分类页面占用的空间。我们只要用the_excerpt()代替模板的主循环中的the_content()就可以达到上述效果。这两个函数出现在PHP标签中:
<?php the_excerpt(); ?> and <?php the_content(); ?>
如果我们的主题目前显示日志摘要但我们希望改成全文显示,也只要将the_excerpt替换成the_content。
在日志存档中显示图片
在分类日志存档中用相应图片来替代日志内容也是件有意思的事。首先我们要将图片插入日志的摘要部分,下面介绍具体步骤:
1. 将图片上传到日志编辑界面
2. 将编辑状态从“Visual”(可视化)转换到“Code”(HTML代码)
3. 通过 Uploads / Browse (上传/插入)选项将图片插入日志。插入的图片应该是没有链接的实际尺寸图片。
4. 将HTML代码中出现的img标签内容复制到日志编辑界面的“Optional Excerpt”(摘要)框中。
5. 完成日志内容(此时可删除日志编辑界面中的图片),发表。
接下来我们要修改模板文件。模板标签the_excerpt_rss()不会在摘要中插入段落标签,因此我们可以利用the_excerpt_rss()来插入img代码。下面是需要放入模板中的代码:
<a href="<?php the_permalink() ?>"> <?php the_excerpt_rss(); ?> </a>
警告:由于摘要中显示的是图片而不是文本,因此以上操作操作可能会影响到博客的RSS订阅。如果确实要进行类似操作,最好先将RSS订阅设为全文输出。
在主页上显示分类
我们可以用以下代码在存档页面和其它页面中限制所显示的日志类别数量:
<?php query_posts('cat=1&showposts='.get_option('posts_per_page')); ?>
代码需要放在主循环前。代码的get_option('posts_per_page')部分根据博客中的设置来显示规定数量的日志。这里有query_posts()函数参数的具体信息。
下面的代码可以独立显示各个类别,从而出现多个类别日志存档:
<?php if (have_posts()) : ?> <?php if (is_month()) {query_posts('year='.get_the_time('Y').'&monthnum='.get_the_time('m').'& author_name=admin&cat=1&showposts='.get_option('posts_per_page')); ?> <!-- Do stuff... -> <?php } ?> <?php while (have_posts()) : the_post(); ?> <!-- post's contents --> <?php endwhile; ?> <?php endif; ?>
如果在archive.php中使用以上代码并查看http://博客名称.com/2008/02/,这时我们会看到该博客发表于2008年2月间、隶属“first”分类的所有日志。
分类:中文手册