I’m qiqiboy !

  • Yes,I’m qiqiboy ! And my vision is world peace.
Home
|
Network
|
WordPress WordPress主循环控制——精确控制文章列表

WordPress主循环控制——精确控制文章列表

| Categories: WordPress

写在开头:

这几天真是风波不断,先是昨天百度被黑,今天谷歌又宣布可能永久退出中国。但是我没闲着,昨天把主题代码整理了一下,又制作了中文语言包,接下来可能会考虑往官方提交。今天又给前几日建的一个bbpress制作了一个简单的主题,主要是和我的博客相配。然后对这个bbpress和我的WordPress博客进行了数据库整合、cookie共享。

+++++++++++++++++++++++++++++++++++++++++++++++

因为时常有人在加我QQ说有问题问我,久而久之我的QQ上就有了一大批陌生人,因为问过问题之后我们就几乎不会再联系。所以我就想建个bbpress,如果你有一些小问题什么的,尽量不要加我QQ了,可以直接在我博客提问,或者也可以到这个小型的讨论区来发帖询问。

+++++++++++++++++++++++++++++++++++++++++++++++

博客评论字数什么的有限制,bbpress则比博客的评论宽松许多。不过,在bbpress提问,需要先注册一下。注册了之后这个账号就可以横行这个bbpress和我的博客,在www.qiqiboy.combb.qiqiboy.com都可以登录。在bbpress登陆后再访问我的博客就依然是登陆状态。登陆之后你就不必再输入姓名,邮件之类,直接就可以发表评论,而且没有一丝广告,和我登陆后看到的情形一样的。

传送:QiQiBoY’S BB

有相当一部分人还不了解bbpress吧,可以看维基百科的解释。bbPress

就像你们看到的http://www.qiqiboy.com/blog,这个页面第二篇和第三篇日志下方有广告,而其他日志都没有。还有情况下,我们想要单独设置每一篇文章的展示形式,这种情况下如何实现?

close

一种方法是单独请求每篇文章数据,另一种就是用一个循环标识数字来控制。第一种方法麻烦,不是特殊情况下用不到,第二种方法则可能会经常用到。比如,添加广告,控制第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 &raquo;')); ?>

   9:         </div>

  10:         <?php endif;$count++; ?>

  11:     </div>

  12:  

  13: <?php endwhile;endif; ?>

将more截断输出内容包含在if语句中,所以只有前三篇会显示more截断内容,后面的都不会显示了,只剩下标题和发表时间。如果你有其他需要,例如让前三篇的标题和后五篇不一样,那你可以在标题循环前,即<h2>标签前面加上if判断定义前三篇的标题。注意不要加到<h2>标签后,因为网页解析是从上自下,加载后面会不起效。

实际应用例子可看本站blog页面的广告位。还有许多CMS模板,文章模块一般都是只显示首篇文章摘要,也应该是这么做的的。mg12的现在的模板首页,之前是完全动态加载,现在为了seo也改成了前三篇直接输出内容,后面的才动态加载。没问过他,但是我想他也大概是这么做的。

我觉得这个还是很有用的一个小技巧,很简单,很实用。

WordPress技巧

 

——By QiQiBoY

声明: 本站遵循 署名-非商业性使用 3.0 共享协议. 转载请注明转自 I’m qiqiboy !
close

43 Responses to this post.

Comments (43) Trackbacks (0)
You can leave a response or Trackback this entry .
  1. No trackbacks yet.

Leave a Reply

avatar-default
Hi, I know you have something to tell me. Please leave me a reply.

You input 0 characters.