因为这个主题的原作者没有直接提供在主界面的缩略图功能,所以我就准备自己写了。

效果如下

image.png

接下来是具体操作:

在functions.php文件中添加这么一个函数:

    function imgs_postthumb($cid) {
       $db = Typecho_Db::get();
       $rs = $db->fetchRow($db->select('table.contents.text')
           ->from('table.contents')
           ->where('table.contents.cid=?', $cid)
           ->order('table.contents.cid', Typecho_Db::SORT_ASC)
           ->limit(1));
    
       preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $rs['text'], $thumbUrl);  //通过正则式获取图片地址
       $img_src = $thumbUrl[1][0];  //将赋值给img_src
       $img_counter = count($thumbUrl[0]);  //一个src地址的计数器
    
       switch ($img_counter > 0) {
           case $allPics = 1:
               echo $img_src;  //当找到一个src地址的时候,输出缩略图
               break;
           default:
                echo theurl.'images/random/deu'.mt_rand(1,7).'.jpg';//没有找到的话就输出一张随机图像。
       break;
       };
    }

如果这个函数与functions里的其他函数重名了就直接改一下!

然后在index.php文件里找到这一段:

    <div class="post-entry">
                    <div class="feature">
                        <a href="<?php $this->permalink() ?>"><div class="overlay"><i class="iconfont">&#xe61e;</i></div><img src="<?php
    
                          echo imgs_postthumb($this->cid);
        
    
    
    ; ?>"></a>
                    </div>

改成我这个样子即可。

需要注意的一点是,这个函数只能识别html格式插入的图片,其他格式暂时无法识别

参考文章:Typecho获取文章第一张图片(缩略图)

Last modification:December 9th, 2019 at 12:29 pm
不要打赏!不要打赏!(大雾