typecho获取文章首张图片作为缩略图的代码

typecho有多款缩略图插件,如Fimg插件Thumbnail插件都相当不错,但是如果仅需要获取文章首张图片作为缩略图的简单功能,或者不想使用插件,则可以通过在主题functions.php添加函数代码的方法实现。

操作步骤:

1、在主题functions.php文件中添加代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function get_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 "";  //没找到(默认情况下),不输出任何内容,也可以在双引号里输入个默认图片地址
   };
}

代码说明:通过正则表达式匹配文章内容的img标签获取src的图片地址。

2、调用代码:

1
<img src="<?php get_postthumb($this->cid); ?>">

PS:其实各php程序获取首张图片的方法都是类似这样。

发表留言