[Wordpress技巧]如何实现第一篇文章全文输出,其余显示摘要

作者: ligyxy | 分类: 博客技巧 | 时间: 2009-08-18

标签:, ,

34

大家都知道Wordpress首页能选择显示全文或是摘要

全文的优点的方便读者阅读,但是这样首页内容庞大,并且对搜索引擎来说有内容重复之嫌。

摘要显示控制比较自由,能手动调节显示内容,但每次都要加 More 标签,也让读者多麻烦了一步。

之前所以说一直选择首页显示摘要,在 AllanAn 的建议下,秉着“不折腾会死”的精神,对首页显示做了修改。

最后实现的效果是:首页与分页中的每一页开头第一篇文章显示全文,其余的显示摘要。

Wordpress Logo -《如何实现第一篇文章全文输出,其余显示摘要》

先说明,原始的摘要显示是怎么弄的呢?有两种办法:

the_content()函数,它能与 More 标签配合使用,在索引页显示摘要,在single.php等内页自动显示全文。

the_excerpt()函数,它提取文章内容,去掉了大部分的HTML标签,输出纯文本格式的文章。这样显示个人认为用在英文文章还可以,对中文效果并不好。

 

我们在下文中将使用the_content()函数来输出摘要,你可以根据自己的喜爱替换它。

我们要编辑的是模板文件内的索引页模版 (index.php)

为了能识别出哪篇是第一篇,先给文章编上号:

找到

1
<?php if (have_posts()) : ?>

在后面添加

1
<?php $count = 1; ?>

 

然后找到首页显示正文的区域,通常是在 class="entry" 的一个DIV容器内,找到这个函数:

1
<?php the_content('',FALSE,'');  ?>

修改这句话,改成第一篇忽略more标记

1
2
3
4
5
<?php if ($count == 1) : ?>
<?php $more = 1; the_content('',FALSE,'');  ?>
<?php else : ?>
<?php $more = 0; the_content('',FALSE,''); ?>
<?php endif; $count++; ?>

到这里就全部修改结束了。

 

第一篇文章全文输出,其余显示摘要。这是我所能想到的最好的输出方式了。如你也有什么好办法,请留言告诉我。谢谢!


已有 34 位大师予以指正

WP已经算不错了
Blogspot的相关功能是人们心中永远的痛

我来试试看

其实很羡慕wp的功能的

确实,WP提供了很多很多可以直接调用的函数。其实。。我看你还是换用WP吧,我看现在国内虚拟主机也有越来越多能满足WP的要求了

我是习惯了首页、分类、标签、搜索全用摘要,唯single页全文!

嗯,这个设计该是不错的,因为能够突出第一篇Post。不过个人感觉,blog 的就是为了让人阅读的更方便简单,事实上,没有太多的人点击其余的文章链接,除非文章确实有价值和意义。

另,兄弟啥时候更换了这张皮?不错,简单大方!

我这个皮缺点就是第一篇显示了全文,但是那个“阅读全文”的按钮没法去掉,会引起误导。

有时候也有一些莫名其妙的留言出现在很久以前的文章里。。

准备好了,向wp转型了。
等我空间过期了再说。

你不是有那个免费空间么,拿那个先试试不错。

WP绝对是强大的, 不过这样修改貌似没有多大意义..

呃。。看各人理解了。我觉得WP既然提供了more这个参数,一定程度上应该是鼓励用户做这个修改的吧。

我都是手动插入more的, 看上去不错.

我也是手动插入more。 用more来显示摘要是最好的办法了。

很有道理,我也差不多是这么做的。首条全文输出无论是对于排版,还是SEO效果都挺好。

对诶。。是我没认真看。早知道就问你了。。我还研究了半天。。

为什么要这么干呢?

这个。。很明了的啊。。摘要显示是关于读取速度和SEO的优化,全文显示是为了方便读者。
我这个做法是中和了这二者

请问你这用得是什么代码高亮插件
效果很不错呢

用的是WP-Syntax

有个比较弱智的注意点。。不过还是说说啦,用代码高亮插件的时候要手动写好lang=?的

好的,去装个试试看
谢谢了

也沒多少流量,我就全文顯示吧,嘿嘿

非WP用户。

WP有很多不错的使用技巧,不过就是没有空间、数据库麻烦点。而且还要维护。

继续使用Blogger!

不错的想法,同样的实现这个功能还可以通过用两个或者多个loop实现,我用的就是这种。借宝地分享一下

1, 'caller_get_posts' => 1 ) ); //指定显示1个也就是最新的一篇日志,这里还可以插入一些 cat post__in 之类的指定铁定分类或者是置顶日志
while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID;
//设置一些样式
the_content();
//设置一些样式
endwhile; wp_reset_query();

/**
*第二节
*第二节和第一节的区别就只在多加了一个'post__not_in'
*
*/
query_posts( array( 'showposts' => 12, 'caller_get_posts' => 1 , 'post__not_in' => $do_not_duplicate ); //同上
while ( have_posts() ) : the_post(); $do_not_duplicate[] = $post->ID;
//设置一些样式
the_excerpt(); //没有插入 More 标签习惯的我,就一直用的这个,,,,
//设置一些样式
endwhile; wp_reset_query(); ?>

要设置跟多方式,把第二节复制一下,就可以了

还有一种,不用while
其实这也算是一种写loop的方式
还有一种方法就是使用不过需要使用foreach
一个一个的呈现出来,官方给的主题都没直接这样使用过,估计是有其他的考虑吧。
强大的WP,我爱你

为什么倒数第三排差个代码段呢?好郁闷。。。。

那你是都不加more了,我是没法这样弄了,我每篇都有more标签。。

而且你的模板也适用the_excerpt()摘要

WP真够强的

呵呵,很多朋友都为这个伤脑筋,还好我也会,嘿嘿

我来参观

很实用的技巧!

你好,想请教一下我博客关于显示正文的代码是这样的:

<?php if ( 1 == $first && is_home() && !is_paged() ) {

the_content('Read more…’);

$first = 0;

} else {

the_content(’Read more…’);

} ?>

请问应该如何修改呢?

我就不折腾这个了,围观!

我是被图片吸引过来的

我在寻找全局置顶的插件,wpsticky 好像不是很好用。有没有什么方法实现将某一篇post 在每个页面,不管是index.php,signle.php 还是在page.php 的情况下都会置顶,而是是全部展开的

额,我不懂置顶该怎么设置。但是单篇文章展开,可以根据文章的ID来判断。

我也说几句