有人喜欢把首页做成奇形怪状,不正常地显示新近文章,正如一个CMS。或者有人想专门做一个页面用来像首页那样显示新近文章的列表,如http://guitarbean.com/blog-updates,就不显示文章分类列表,而正如正常的博客首页那样显示最新文章。为了这个效果,这里有一个令人兴奋的解决方案。
一个错误的方案:
1、把archive.php或index.php当成页面,在新建页面中把“Page Template”指向它。可惜这样做的结果等同与指向page.php,所建立的页面只会显示单个页面内容。
一些不错的解决方案(均需建立页面):
1、alexking.org的articles插件。有了这个插件,你可以显示一个漂亮的article list。这个列表有文章归类,但显示的不是全部文章,因为需要给文章添加一个额外的key=article和value=1。这不是正常的首页效果,算是半个site map吧。
2、使用Rob Marsh, SJ的 Recent Posts 插件,类似的还有中文 WordPress 工具箱 。放一个recent post到某个页面中……之后的不说自明了吧,只是所显示的也只是文章标题而已。
3、wordpress.org.cn上找到的一个帖子 ,不过得把代码改改:
<?php
/*
Template Name: guid
*/
?>
<?php get_header(); ?>
<div id="content" class="widecolumn">
<?php $posts = get_posts( "numberposts=10" ); ?>
<?php if( $posts ) : ?>
<?php foreach( $posts as $post ) : setup_postdata( $post ); ?>
<div class="post">
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<small><?php the_time('F jS, Y'); ?></small>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata">Posted in <?php the_category(', '); ?></p>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
<?php get_footer(); ?>
这样再把页面指向它(guid)就可以了。不过经我测试发现,使用这个方法得到的文章不是以时间的新到旧排序的,而是以旧到新排序的,得到的列表很不合意。在codex.wordpress.org上查get_posts,说默认是以时间新到旧排序的,可是我再怎么添加修改参数也实现不了,可能因为我的本地机是wordpress 2.3.3吧。不管怎么说,这个方法离目标只有一步之遥,只要再改正时间排序问题和可以使用像pagebar这样能进行分页就成功了。
一个令人兴奋的解决方案——query_posts & The_Loop !
这里,只要在合适地地方添加一句:<?php query_posts(”paged=$paged”); ?>
步骤:
1、拷贝一个index.php(或archieves.php)并改名为其它名,如list_post.php;
2、找到<?php while (have_posts()) : the_post(); ?>,在之前加这行 <?php query_posts(”paged=$paged”); ?>,如
<?php query_posts("paged=$paged"); ?>//取得posts
<?php while (have_posts()) : the_post(); ?>
3、在页面最顶部添加
<?php
/*
Template Name: List Posts
*/
?>
以把这个文件标识为List Posts。注意,这代码最好紧跟<?php get_header(); ?>,不要有空行,最好如:
<?php
/*
Template Name: List Posts
*/
?><?php get_header(); ?>
4、新建一个页面,如blog-updates,把Page Template指向它,什么内容也不用写,就OK了!
原理:为了能显示Wordpress的文章列表,最好的是使用The Loop ,在The Loop中就可以使用像the_title()啊,the_content()之类的Template_Tags和分页信息了。而在index.php和archves.php中,都有一个默认的全局魔术变量,这个魔术变量常常变器法地变化着自身:在首页中,是一个默认的最新文章列表,在存档中是当前分类或日期的文章列表,而在单个post或者page中就是单个文章了。而使用query_posts正好能更改这个魔术变量成为想要的。如query_posts(”paged=$paged”)就是把它变为当前页的文章列表。
参考文献:
[1]http://codex.wordpress.org/The_Loop
[2]http://codex.wordpress.org/User:JamesVL/query_posts
[3]http://codex.wordpress.org/Category:Template_Tags
[4]http://wordpress.org.cn/viewthread.php?tid=7143&page=1&fromuid=15469#pid33133



tags: 






