程志辉博客 - 一个伪文艺青年
贵在坚持,难在坚持,成在坚持!
程志辉

众所周知,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); ?>
2020年02月02日
  • 悟爱破戒 学习了,感谢
  • 平顶山 标记下
  • 哈士奇社区 好好好二哈学习了
  • 成人之美 学习了。
  • 久夜博客 有没有办法判断图片大于200kb输出默认缩略图?
  • 程志辉 作者 回复 久夜博客 应该有办法解决,只是我还不会。我看wordpress的做法是在上传图片的时候自动生成小尺寸的图片在储存空间里,这样的好处是用起来很舒服,但一定程度上会消耗一些空间,不过实际运用中真的很香。
  • 演员 加载有点慢了!可以优化下
  • 程志辉 作者 回复 演员 看了一下是图片加载的问题,服务器带宽解决不了。程序暂时只能写到这样。CDN暂时也不考虑,之前被攻击一夜扣100吃不消……(谢谢提议。
  • 风也 回复 演员 图片可以尝试白嫖jsdeliver
  • 程志辉 作者 回复 演员 谢谢分享,暂时还没有时间折腾。以前玩过一阵子自媒体,经过疫情发现,新闻类的自媒体,要么是搬运要么是带有主观性的报道看不得。最近又看到以前的朋友再说微信又改版了,改来改去,平台一家又一家,我觉得呢,内容永远为王。
  • cansnow 商业互吹,NB!
  • 程志辉 作者 回复 cansnow 哇!!!域名不错~刚去你博客发现没有开放评论不能留爪……
  • cansnow 回复 cansnow 那是个自留地,2333
  • 张啸天 受益匪浅
  • 程志辉 作者 回复 张啸天 商业互吹~
  • 吹梦到西洲 又见技术流
  • 佛系派 发现有好多人的站点都使用的typecho,看来我也得多学习一下,留个后路哈哈
  • 程志辉 作者 回复 佛系派 每个开源CMS都有它的优势啦~我倒觉得重要的是内容
  • 灰常记忆 膜拜新星主题作者
  • 程志辉 作者 回复 灰常记忆 嘿嘿,菜鸟一枚~
  • 灰常记忆 回复 灰常记忆 这个用插件实现复杂么?
  • 程志辉 作者 回复 灰常记忆 不难,但是能丢到主题里面解决的事情,没必要单独弄个插件啊
  • 胡记 行家一出手,就知有没有!有空定要试试你做的模板。 小辉同学,近来一些可好?抗疫战争胜利在望了,期待新学期的到来!
  • 程志辉 作者 回复 胡记 一切安好,在家备考,愿疫情尽快结束,我想武汉了。(话说刚才服务器被打入阿里云黑洞,刚放出来你评论就过来了)
  • 林三 别的不评价了,你这个代码高亮我挺喜欢的,哈哈!
  • 佛系派 话说主题怎么这么好看呢
  • 青山 连续制作了几套Typecho模板 这效率,为你点赞
  • 程志辉 作者 回复 青山 嘿嘿,专业学的就是这个。
  • Lvtu 前些日子过来看了几次没更新,不知你情况如何? 现在冒泡了证明一切安好! 现在在哪里?
  • 程志辉 作者 回复 Lvtu 谢谢关心,目前在湖北黄石,身体一切正常没有任何异样。放假在家想更些内容,又不知道从何写起。
  • Mr.Chou 回复 Lvtu 一定要注意防护,加油静待春暖花开时..
  • Lvtu 回复 Lvtu 那边比我们老家这边好,注意防护!
  • 小明同学 新模板不错哦
  • 程志辉 作者 回复 小明同学 谢谢认可~
  • 柳橙睿 可以可以
  • 平顶山 换模板了,不错啊
  • 程志辉 作者 回复 平顶山 谢谢~
  • 逝雪蓝冰 其实Markdown里面还是可以直接插入HTML语言的,我的hexo是直接插入,居左、居右直接使用HTML代码即可;至于typecho,可以用单独的两行感叹号包裹HTML语言实现插入。Markdown语言值得好好学一下,发明之初就是方便写博客和新闻的,像插入图片、链接、表格、列表,功能强大使用简单。有些模板主题还能按小标题自动实现目录功能,如我现在的网站next主题,next主题里面还有多种不同风格可供选择,只要简单大气方便阅读看着舒服,不用太折腾。
  • 演员 MARKDOWN语法确实烦人-.-
  • 程志辉 作者 回复 演员 嘿嘿,但总体还是很舒服的,写作上内容永远都是王道,而不是一直考虑怎么样排版好看。
  • 演员 回复 演员 单词的写作够用了!加些代码就很难受了!
Icefox Theme . 鄂ICP备16001608号-1