众所周知,Typehco使用的是MARKDOWN语法,优点就是不用在排版上费太多功夫。整理笔记非常方便。(想要居中的时候想哭……)不过这不是今天讨论的重点。
连续制作了几套Typecho模板,百度找了几个获取缩略图都是需要手动在文章里面找一个图片替换为IMG标签
//Markdown内联式图片编写方式
![我是图片描述](https://cdn1.qqzmly.com/usr/uploads/2019/10/2050932897.jpg)
//Markdown脚部式图片编写方式
![请输入图片描述][1]
[1]: https://cdn1.qqzmly.com/usr/uploads/2019/10/2050932897.jpg
//HTML5图片编写方式 (传统方法都要把前面两种改为下面这个
<img src="https://cdn1.qqzmly.com/usr/uploads/2019/10/2050932897.jpg" alt="请输入图片描述">
今天分享的是Typecho获取文章缩略图,随机缩略图(非插件)
上面三种方式随便一种都能够调用出缩略图,如果文章没有图则输出一张随机图。优先级为HTML5图片编写方式>Markdown内联式图片编写方式>Markdown脚部式图片编写方式>随机缩略图
主题functions.php添加以下代码
function img_postthumb($thumbThis) {
$db = Typecho_Db::get();
$rs = $db->fetchRow($db->select('table.contents.text')
->from('table.contents')
->where('table.contents.cid=?', $thumbThis->cid)
->order('table.contents.cid', Typecho_Db::SORT_ASC)
->limit(1));
preg_match_all('/\<img.*?src\=\"(.*?)\"[^>]*>/i', $rs['text'], $thumbUrl); //通过正则式获取图片地址
preg_match_all('/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i', $rs['text'], $patternMD); //通过正则式获取图片地址
preg_match_all('/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i', $rs['text'], $patternMDfoot); //通过正则式获取图片地址
if(count($thumbUrl[0])>0){
return $thumbUrl[1][0]; //当找到一个src地址的时候,输出缩略图
}else if(count($patternMD[0])>0){
return $patternMD[1][0];
}else if(count($patternMDfoot[0])>0){
return $patternMDfoot[1][0];
}else{
//在主题根目录下的 /img 目录下放随机图片 thumb_开头
//如:thumb_1.jpg
return $thumbThis->widget('Widget_Options')->themeUrl."/img/thumb_".rand(1,5).".jpg";
}
}
index.php等文件里调用方式
<?php echo img_postthumb($this); ?>