2011年9月22日星期四

精通WordPress主题-1: 修改特定日志的样式和内容

当书写wordpress主题的时候, 客户可能会要求Google广告做为一篇日志显示,比如post #2, 或是第一篇日志拥有不同的背景颜色, 或是一些文章只显示标题. 如果仅仅使用单个 Loop你不能实现这些功能,所以本文将告诉你如何使用多个loop来显示不同的日志列表。

那究竟什么是Loop呢?

“Loop是用来显示你的Wordpress中的每一篇日志。使用Loop, WordPress 处理每篇日志,让其显示在当前页面,并基于他们在Loop标签内匹配的标准来进行日志格式化. 如果你要代码在每篇日志里面都显示,则任何 html 和PHP代码都必须放在Loop的开始和结束标签之内.”

来自: WordPress.org

换句话说, Loop是你的Wordpress页面中的一段代码,它重复匹配所有的日志,构成 “loops”,下面是一个示例:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?><h3><?php the_title(); ?></h3>

<div class="entry">

<?php the_content('Read more ?'); ?>

</div>

Posted on <?php the_time('F jS, Y') ?> in <?php the_category(', '); ?>

<?php endwhile; endif; ?>

第一行和最后一行就是loop的开始和结束标记. Loop里面的所有代码重复每一篇文章. 上面的代码所产生的结果就是:

<h3>Post Title</h3><div class="entry">

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed mauris magna, accumsan at, commodo vitae, lacinia nec, odio. Sed non nulla a tellus rutrum cursus.</p>

</div>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

这个格式现在将重复显示每一篇文章得到一个日志列表.

现在,我们似设要在首页显示5篇文章,同时显示第一篇日志的内容, 接着的4篇日志只显示标题和日期. 要做到这一点, 我们将引入第二个Loop使用不同的内容风格. 比如:

<?php query_posts('showposts=1‘); ?><?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<h3><?php the_title(); ?></h3>

<div class="entry">

<?php the_content('Read more ?'); ?>

</div>

Posted on <?php the_time('F jS, Y') ?> in <?php the_category(', '); ?>

<?php endwhile; endif; ?>

上面的代码将只显示最后的一篇日志. 蓝色部分的代码就是所要显示的日志数.

接下来,我们再为接着的4篇文章创建一个loop,并且只显示日期和标题,使用下面的代码:

<?php query_posts('showposts=4&offset=1‘); ?><?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<h2><?php the_title(); ?></h2>

Posted on <?php the_time('F jS, Y') ?> in <?php the_category(', '); ?>

<?php endwhile; endif; ?>

注意桔色的代码部分. 我们要显示4篇最新的文章, 并且排除第一篇文章, 因为第一篇文章我们已经显示了. 放置这两段代码在一起,你将得到的就是:

<h3>Post Title</h3><div class="entry">

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed mauris magna, accumsan at, commodo vitae, lacinia nec, odio. Sed non nulla a tellus rutrum cursus.</p>

Posted on July 29, 2007 in <a href="#">Tutorials</a><h2>Another Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

<h2>A Third Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

<h2>A Fourth Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

<h2>One More Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

你也可以使用双重Loop,在确定的文章数目后显示Google广告:

<?php query_posts('showposts=2'); ?><?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<h2<?php the_title(); ?></h2>

Posted on <?php the_time('F jS, Y') ?> in <?php the_category(', '); ?>

<?php endwhile; endif; ?><!-- google ad script -->

(Google ads here)

<?php query_posts('showposts=3&offset=2'); ?>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

<h2><?php the_title(); ?></h2>

Posted on <?php the_time('F jS, Y') ?> in <?php the_category(', '); ?>

<?php endwhile; endif; ?>

这些代码将输出得到下面的结果:

<h2>First Post</h2>Posted on July 29, 2007 in <a href="#">Tutorials</a><h2>Second Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

<h4>Google Ads</h4>

<h2>Third Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

<h2>Fourth Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

<h2>Fifth Post</h2>

Posted on July 29, 2007 in <a href="#">Tutorials</a>

原文: modifying-individual-posts-in-the-loop
翻译: 帕兰

来源于 精通WordPress主题-1: 修改特定日志的样式和内容 | 帕兰映像

没有评论:

发表评论