Typecho 首页实现自动摘要的方法

09/11/201717:20:00
评论
136

之前在修改一个主题的时候,主页文章列表默认输出的是文章的所有内容,这样非常不美观,在别的TE主题翻了一下,发现TE是内置有输出摘要的方法的。调用方法:

<?php $this->excerpt(300, '...'); ?>

但是,这种方法截取出来的和WordPress哪个摘要的函数一样,有点不美观,而我想实现的是像WP excerpt那样自动输出第一个p标签包裹的文字,我不会正则,所以在TE论坛搜了一下,找到了糖兜写的代码,没有WP excerpt那么强大,但是已经是略为美观了。

<?php
preg_match_all('/<p>.*?<\/p>/im', $this->content, $m);
//print_r ($m[0]);
//如果有一个以上的p
if (count($m[0]) > 0) {
    //echo('--第一个P字符串长度--'.strlen($m[0][0]).'<hr>');
    //如果第一个p字数小于200
    if (strlen($m[0][0]) < 200) {
        //则输出第一个p+第二个p (如果没有第二个p php好像会自动忽略)
        echo ($m[0][0] . $m[0][1]);
    } else {
        //输出第一个p
        echo ($m[0][0]);
    }
} else {
    //echo('没有找到p,输出摘要:<hr>');
    $this->excerpt(300, '...');
}
//echo('<hr>-----数量'.count($m[0]));
?>

2017.08.23更新
评论里提到如何去除图片,我改动了一下,代码

<?php
preg_match_all('/<p>.*?<\/p>/im', $this->content, $m);
if (count($m[0]) > 0) {
    if (strlen($m[0][0]) < 200) {
        $result = $m[0][0] . $m[0][1];
    } else {
        $result = $m[0][0];
    }
    $result = preg_replace("/<[img|IMG].*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/", "", $result);
    echo $result;
} else {
    $this->excerpt(300, '...');
}
?>

2017.09.20更新
段落数<2且内容长度过短会报错,把

if (strlen($m[0][0]) < 200) {

修改为

if(strlen($m[0][0]) < 200 &&  count($m) > 1){

即可去除报错。

Typecho 响应式博客主题 Echo 未分类

Typecho 响应式博客主题 Echo

Echo主题简介一套基于layui框架的Typecho主题Echo,主题名取自博客域名(www.echo.so)。主题极简美观,并进行了响应式布局,使博客在手机和平板电脑上也有更好的浏览阅读体验。主题...
Typecho 漂亮的单栏主题 Aria 未分类

Typecho 漂亮的单栏主题 Aria

主题简介书写属于自己的篇章,一款简洁漂亮的单栏Typecho博客主题Aria,具体样式大家可以看底部下载部分的作者演示站,总的来说算是一个功能比较完整的主题了,最主要是作者更新的相对来说比较勤。主题预...
Typecho 简约大图封面主题 Cola 未分类

Typecho 简约大图封面主题 Cola

主题简介这是由网友@可乐投稿的作品,主题采用了大图封面的单栏设计,整体看上去比较干净,不过该主题可以优化的细节之处还有很多,比如:1.评论样式有点粗糙 2.配色有点不够统一,特别是按钮触发的部分 3....
Typecho程序伪静态规则大全 开发日志

Typecho程序伪静态规则大全

Typecho程序的伪静态规则不同于wp直接默认可用,需要我们手工加载到空间中才可以生效。这里TypechoTips整理了一些不同的主机环境中的伪静态规则,希望对大家有所帮助!1、Linux Apac...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: