<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Guitarbean.com &#187; hack</title>
	<atom:link href="http://guitarbean.com/tag/hack/feed" rel="self" type="application/rss+xml" />
	<link>http://guitarbean.com</link>
	<description>WPTheme Java JavaScript...Yeah~!</description>
	<lastBuildDate>Tue, 18 Mar 2008 08:51:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WP非首页显示文章列表(Wordpress hack)</title>
		<link>http://guitarbean.com/2008/03/18/wp-post-list-in-none-indexwordpress-hack.html</link>
		<comments>http://guitarbean.com/2008/03/18/wp-post-list-in-none-indexwordpress-hack.html#comments</comments>
		<pubDate>Tue, 18 Mar 2008 08:44:33 +0000</pubDate>
		<dc:creator>govo</dc:creator>
				<category><![CDATA[wordpress]]></category>
		<category><![CDATA[hack]]></category>

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