大部分人的习惯都是在首页显示文章的摘要,本文总结了几种在首页显示摘要的方法。

more标签

这种方法应该是最灵活的一种方法,操作也很简单,只需要你在编辑文章的时候插入more标签

或者使用快捷键alt+shift+t,效果如下

那么如果你在主题的首页模板中调用the_content函数,首页的文章摘要就显示more之前的内容。相反,如果没有插入more标签,就会显示全文。

手动输入摘要

在首页模板中(比如home.php或index.php)中调用the_excerpt函数显示摘要,如果你在编辑文章的时候,在下面的“摘要”内输入了内容,则会显示该“摘要”里的内容

如果“摘要”里没有内容,就输出more标签前的内容,再如果没有more标签,就输出固定字数的摘要(这个固定的字数好像是默认的,很长,我还没找到更改这个字数的方法,有知道的希望告之)。

显示固定的字数

如果你的主机开通了php的mb_string扩展的话,可以使用mb_strimwidth函数来截取文章内容,以达到显示固定字数摘要的目的,比如首页摘要显示前200个字

echo mb_strimwidth(strip_tags($post->post_content),0,200,'......');

这样就会显示文章的前200个字,随后跟着一个省略号。这个mb_strimwidth函数可以很好截取中文字符。我们再稍改造一下,就可以显示“阅读全文”链接的效果

echo mb_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[阅读全文]</a>');

但是,如果假如万一你的主机没有激活php的mb_string扩展,使用这个函数就会报错。在这种情况下,我们可以自定义一个类似的函数,下面是我写的一个截取utf-8字符串的函数dm_strimwidth,也是我正在使用的方法

function dm_strimwidth($str ,$start , $width ,$trimmarker ){
 $output = preg_replace('/^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$start.'}((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$width.'}).*/s','\1',$str);
 return $output.$trimmarker;
}

使用方法和前面的mb_strimwidth是一样的,不过使用前你需要把上面的函数定义复制到functions.php文件中,然后调用

echo dm_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[阅读全文]</a>');

综合方法

有时候下面这种做法也是不错的,即如果给文章手动添加了摘要,就显示这个手动添加的摘要,如果没有就显示固定的字数。方法如下:

if(has_excerpt()) the_excerpt();
 else
         echo mb_strimwidth(strip_tags($post->post_content),0,200,'<a href="'.get_permalink().'">......[阅读全文]</a>');
添加评论

14 条评论

  1. 1 F

    天下免费

    2010-02-05 星期五 13:58

    高手啊,拜读了

    回复
  2. 2 F

    timberland usa sale

    2010-02-19 星期五 16:07

    so good article.i will come back soon!

    回复
  3. 3 F

    夏季

    2010-06-03 星期四 12:48

    学习了,我也搭建了一个,好多东东还不会

    回复
  4. 4 F

    snowxh

    2010-06-16 星期三 01:30

    唔 看了还是不太明白

    回复
  5. 5 F

    charbin

    2010-06-25 星期五 00:40

    我用你写的dm_strimwidth()函数很好用,但是对于一些有图片的文章,它会把图片也一并截出来,有没有方法不截图片的?

    回复
    • charbin

      2010-06-25 星期五 00:51

      弄错了,不是把图片截出来了。而是函数没发生作用,我再看看哪里出问题了。 晕~

      回复
  6. 6 F

    weatny

    2011-02-28 星期一 23:08

    看来还是添加more标签对我来说最简单啊 呵呵.多谢了

    回复
  7. 7 F

    任刚的博客

    2011-03-04 星期五 20:51

    还是不太明白
    我正在搞这个
    我也是想让太在首页显示简单的摘要

    这个行不?

    回复
  8. 8 F

    前端体验

    2011-09-23 星期五 01:19

    不错受教了,

    回复
  9. 9 F

    co

    2011-09-29 星期四 21:30

    不错啊,很简单有效

    回复
  10. 10 F

    yazi

    2011-10-30 星期天 18:28

    echo dm_strimwidth(strip_tags($post->post_content),0,200,’……[阅读全文]‘);

    这段具体放在哪啊??

    回复
  11. 11 F

    云爱

    2011-12-19 星期一 21:23

    还是不行啊,郁闷了、

    回复
  12. 12 F

    3qsami

    2011-12-24 星期六 13:23

    博主你好,我是WordPress的初学者,对于文中提到的“综合方法”甚是认同,但是不知如何将代码恰当地置入index.php,因为对于php语言不是很了解。博主能否提供一些指导?谢谢!

    回复
  13. 13 F

    Luke liu

    2012-01-03 星期二 19:20

    Thank you very much

    回复

添加评论