wordpress首页显示摘要的几种方法小结

wordpress首页显示摘要的几种方法小结,第1张

wordpress首页显示摘要的几种方法小结

大多数人的习惯是在首页展示文章摘要。本文总结了几种在首页显示摘要的方法。

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

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

那么如果你在主题的首页模板中调用the_content函数,首页的文章摘要就显示more之前的内容。相反,如果没有插入more标签,就会显示全文。
手动输入摘要
在首页模板中(比如home.php或index.php)中调用the_excerpt函数显示摘要,如果你在编辑文章的时候,在下面的“摘要”内输入了内容,则会显示该“摘要”里的内容

首页、存档页显示文章摘要的好处很多,比如:
1,页面不会拉的很长,既美观,又有利于访客快速找到所需的文章
2,减少搜索引擎认为的重复内容
3,浏览者想看到全文就得点击进入单个文章页,因此增加了点击量-.-
4,首页、存档页数据量少了,节约了流量和带宽,提高了页面打开速度

RSS输出全文的好处只用讲一条:作为读者,我订阅feed的时候很讨厌那种只输出摘要的

但是,wordpress默认的是显示全文,不但第一页显示全文,点“下一页”,进入第二页、第三页、乃至无穷页,也都显示全文。那么如何解决这一问题呢?网上流传着很多方法:

一、在写日志时插入<!–more–>标签,这样在首页、存档页显示的就只是<!–more–>之前的内容。
这种做法缺点太明显:
1,rss输出也变成了只有<!–more–>之前的内容。实际上,这一缺点可以通过改代码、装插件等办法克服,但另一个缺点则无法克服:
2,如果你之前已经写了数百篇文章,难道还要一个个修改,重新加上<!–more–>标签吗?

二、修改主题的模板文件,在index.php里找到

复制代码代码如下:
<?phpthe_content();?>

改成

复制代码代码如下:
<?php
if(is_single()oris_page())
{the_content();}
else
{the_excerpt();}
?>

这样改的作用是加一个判断,如果是单篇日志页或静态页面,则输出全文,否则输出摘要。

看起来很美,但是wordpress默认的摘要输出算法是基于西文的,字数是用空格判断的,而中文基本没有空格,所以它计算后的“摘要”输出其实是全文...所以对于中文博客来说,这种方法必须和其他方法配合使用。

第三,写日志的时候自定义摘要。写日志界面有一个“自定义摘要”字段。如果您想将其显示为摘要,您可以直接输入。

这种方法的优点是非常突出的:不像其他方法,一篇文章的开头只有几个字可以显示为摘要。这种方法的汇总内容非常灵活,完全可以定制。

但缺点也很突出:和第一种方法一样,以前的文章都要手工改,工程太庞大。

四。修改WordPress自带的汇总功能
据http://www.fwolf.com/blog/post/102(这篇文章在网上被大量转载,我个人认为这里是原文出处。不幸的是,许多转载在搜索引擎中排名更高)

一般用户修改wordpress的源文件恐怕有点困难,而且升级wordpress还要重新修改,维护起来也不方便。不过最近发现原作者把它写成了一个插件,下面的插件一起说说吧。

五、使用插件,主要还是修改wordpress自带的汇总功能。但是wordpres默认的情况是归档页面(按分类、标签、时间存储的文件)输出摘要,首页和首页点击的第二、第三页输出全文。所以即使使用了插件,如果想让主页显示摘要,还是要通过第二种方法修改主题的模板文件。

下面分析一下我知道的几个插件的算法:

1.Fwolf的http://www.fwolf.com/blog/post/296
和wp自己的差不多,只是由空网格判断改为了段落判断,文章的前三段会作为摘要输出。因为是按段落输出,所以不会出现中文乱码。

2.Mulberry的中文工具箱http://yanf.org/blog/WordPress/kit/
使用substr()函数截取前256个字节,然后使用utf8_trim()函数进行处理,这样就不会出现乱码汉字。

3.Yskin的http://yskin.net/2006/07/Mulberry·Kit.html
我本来推荐这个,觉得很完美,但是后来个人觉得还是有一些定制的需求,所以决定自己改一下,于是有了这篇文章——...
YSKIN的是段落和文字的混合判断。首先,他的最小输出单位仍然是段落。

以上所有方法都有一个共同特点:输出的摘要是没有格式的,只有纯文本,原来的颜色、字体、超链接、图片等等都被过滤掉了。而我个人其实希望能够保留格式。

另外,如果按段落输出,有的段落长,有的段落短,那么输出的摘要就不是很整齐(其实要求这种整齐对于一般的博客来说没有任何意义,但是如果是cms或者杂志风格的主题,可能会有一定的排版需求,另外就是我个人的喜好-。-).

理想的情况是根据显示的行数来判断,就像古龙的小说一样。钱是按行数计算的,不管这一行只有一个字还是满的,这样输出的文本块大小一定要整齐。但是,网页不同于书籍,宽度不是固定的,无法预测每行应该写多少字。而且如果保留图片的话,很难判断图片应该占多少行,所以按照行数来判断暂时不可行。

退而求其次,根据字数来判断。虽然每篇摘要的“占地面积”可能不同,但字数是一样的,还算工整。不过中文工具箱的方法有点麻烦。其实一个mb_substr()函数完全可以完成这个任务,截取指定数量的首汉字,绝对不会出现乱码。

但是,mb_substr()函数也有一个问题。按照字符数截取。如果文章中夹杂了英文,比如wordpress这个词是九个字符,比九个汉字占据的面积小很多,那么夹杂英文的摘要会显得比所有汉字的摘要都短(这个都是考究的,我觉得我有点bt-。-).解决方法是使用mb_strcut()函数,这个函数和mb_substr()函数基本相同,只是根据字节数进行截断。在utf-8中,一个汉字占用三个字节左右,一个英文字母占用一个字节,这样被截断的中文文本会更短,和英文的长度一致。同样,mb_strcut()函数也不会乱码。

mb_substr()和mb_strcut()函数的共同问题是被字符截断,在英语中是被字母截断,所以有可能从中间截断一个单词...

另一个问题是mb_substr()和mb_strcut()属于mbstring扩展库,有些空不支持。对于这个空厂商,给他写信,让他安装。交了就要理直气壮的要。如果要求无效,那就真的要考虑空之间不能满足基本要求的质量了。

我写了一个插件,基本仿照Yskin的,不过截取用的是mb_strcut()。并为不支持mb_strcut()的空间自定义了一个函数,抄自网上的mb_substr()函数替代脚本,没找到mb_strcut()的替代脚本,汗。此外还有以下特点:
1,输出的摘要保留原来文章的格式。
2,做了一个判断,如果是存档页(分类存档、每月存档等),输出的摘要较短;如果是首页,输出的摘要较长。
3,如果本来的文章长于摘要,那么最后会显示[……],省略号指向全文的链接。去掉了Yskin原来的统计字数,因为我个人不喜欢;当然要加上也很容易。

更新:
AdvancedExcerpt是另一个很好的WordPress摘要插件,但需要略加改动才适合中文,对它的介绍和修改方法请看保留html标签的wordpress摘要插件一文。总结:

为了在wordpress博客的首页和存档页上完美的显示摘要,并通过RSS输出全文,请根据自己的需要下载上面的一个摘要插件,或者下载我写的摘要插件。打开插件后,如果你发现你的主页还是全文,说明你的主题不被支持。请根据上述第二种方法修改主题文件。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/772660.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-03
下一篇2022-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存