WordPress主循环控制——精确控制文章列表
写在开头:
这几天真是风波不断,先是昨天百度被黑,今天谷歌又宣布可能永久退出中国。但是我没闲着,昨天把主题代码整理了一下,又制作了中文语言包,接下来可能会考虑往官方提交。今天又给前几日建的一个bbpress制作了一个简单的主题,主要是和我的博客相配。然后对这个bbpress和我的WordPress博客进行了数据库整合、cookie共享。
+++++++++++++++++++++++++++++++++++++++++++++++
因为时常有人在加我QQ说有问题问我,久而久之我的QQ上就有了一大批陌生人,因为问过问题之后我们就几乎不会再联系。所以我就想建个bbpress,如果你有一些小问题什么的,尽量不要加我QQ了,可以直接在我博客提问,或者也可以到这个小型的讨论区来发帖询问。
+++++++++++++++++++++++++++++++++++++++++++++++
博客评论字数什么的有限制,bbpress则比博客的评论宽松许多。不过,在bbpress提问,需要先注册一下。注册了之后这个账号就可以横行这个bbpress和我的博客,在www.qiqiboy.com和bb.qiqiboy.com都可以登录。在bbpress登陆后再访问我的博客就依然是登陆状态。登陆之后你就不必再输入姓名,邮件之类,直接就可以发表评论,而且没有一丝广告,和我登陆后看到的情形一样的。
传送:QiQiBoY’S BB
有相当一部分人还不了解bbpress吧,可以看维基百科的解释。bbPress
就像你们看到的http://www.qiqiboy.com/blog,这个页面第二篇和第三篇日志下方有广告,而其他日志都没有。还有情况下,我们想要单独设置每一篇文章的展示形式,这种情况下如何实现?
一种方法是单独请求每篇文章数据,另一种就是用一个循环标识数字来控制。第一种方法麻烦,不是特殊情况下用不到,第二种方法则可能会经常用到。比如,添加广告,控制第X篇文章的标题、tag、category,甚至前半部分与后半部分文章输出内容格式的不同(摘要与截断)等。
1: <?php $count = 1; ?>
2: <?php if(have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
使用方法就是在主循环开始前加上一个$count = 1; 变量。然后在循环主体中,想要改变第n篇文章的不同则在循环部分前面加上
1: <?php if ($count == n) : ?>
2: //你的代码
3: <?php endif;$count++; ?>
所谓循环部分就是常规文章的格式定义。代码中$count=1是第一篇文章,其它文章更改相应编号即可。后面的$count++是让每次循环变量$count的值自加1.
我说的可能不够明白,那么举一个例子,如页面八篇文章,要让前三篇显示more截断,后面五篇只显示标题。可以这么做:
1: <?php if (have_posts()) : $count=1;while (have_posts()) : the_post(); ?>
2:
3: <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
4: <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2>
5: <small><?php the_time(__('F jS, Y')) ?></small>
6: <?php if($count == ( 1 || 2 || 3 ) : ?>
7: <div class="entry">
8: <?php the_content(__('Read more »')); ?>
9: </div>
10: <?php endif;$count++; ?>
11: </div>
12:
13: <?php endwhile;endif; ?>
将more截断输出内容包含在if语句中,所以只有前三篇会显示more截断内容,后面的都不会显示了,只剩下标题和发表时间。如果你有其他需要,例如让前三篇的标题和后五篇不一样,那你可以在标题循环前,即<h2>标签前面加上if判断定义前三篇的标题。注意不要加到<h2>标签后,因为网页解析是从上自下,加载后面会不起效。
实际应用例子可看本站blog页面的广告位。还有许多CMS模板,文章模块一般都是只显示首篇文章摘要,也应该是这么做的的。mg12的现在的模板首页,之前是完全动态加载,现在为了seo也改成了前三篇直接输出内容,后面的才动态加载。没问过他,但是我想他也大概是这么做的。
我觉得这个还是很有用的一个小技巧,很简单,很实用。

Post url: http://qiqi.boy.im/1c. You can ReTweet This Post.

43 Responses to this post.
Comments (43) Trackbacks (0)