网上大部分typecho缩略图功能一般分为两类。一类是文章有图片的会显示缩略图,没有图片的则显示随机图片。还有一类是有图片会显示缩略图,没有图片显示默认图片。
总而言之就是每一个文章都要有一个缩略图。这样有一个好处就是文章会很统一,很美观。但是如果有很多随机的缩略图或者默认图片,那么明显用户体验会很差。
今天给大家提供另外一种缩略图的方案:有图片则显示缩略图,没有图片则不显示。先上一张图片,如下:
下面我们看一下功能是怎么实现的,先把下面这段代码贴到functions.php里面去。
//获取文章缩略图
function showThumbnail($widget)
{
$attach = $widget->attachments(1)->attachment;
$pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';
if (preg_match_all($pattern, $widget->content, $thumbUrl)) {
echo "<div class='post-thumb'> <img class='thumb' src='".$thumbUrl[1][0]."' /></div>";
} elseif ($attach->isImage) {
echo "<div class='post-thumb'> <img class='thumb' src='".$attach->url."' /></div>";
}
}
这段代码的意思是,使用正则表达式扫描全文第一张图片,如果有就输出。如果没有再检查附件,如果有则输出。顺便提一句,网上有一些方案是只检查附件有没有图片,这种方案是明显存在漏洞的,你比如如果是外链图片,就会认为是没有图片。所以优先推荐带正则表达式的方案。
下一步要打开 index.php 或者 archive.php 将 <?php showThumbnail($this); ?> 这段代码贴到 <div class="post-content" itemprop="articleBody"> 前面。
然后在style.css样式表里面添加缩略图样式。
.post-thumb {
float: left;
width: 200px;
max-height: 150px;
overflow: hidden;
margin: 0 20px 10px 0;
border-radius: 5px;
}
@media (max-width: 768px) {
.post-thumb{width:100%!important;}
}
保存,刷新页面,大功告成!
这样的设置挺好,主题很简洁..不知能否加个根据时间自动切换夜间模式?
@Mr.Chou
好建议,回头我摸索一下。
楼主你好,我设置了之后图片显示比较大,貌似是原图,不是缩率图
@memory
清空缓存,然后刷新。
@雨致
谢谢博主,这个问题解决了,但是出现了一个新的问题,我的缩略图显示在文字上边而不是文字左边
@memory
我重新修改了一下css样式,你到文章里面重新复制一下。
@雨致
感谢博主,这样每篇博客插一张图片就好看多了(!)[zface_2.png] (!)[zface_12.png]
这个可以的,学习了
我的文章缩略图尺寸是对的,但是错位了!我看您的post-box盒子尺寸616px是固定的,我的是730px,没找到从哪里修改,求指教
@骄阳似火
网站模板有修改,最新版还没来得及更新。
@雨致
什么时候更新啊,非常期待啊!这两天能更新吗
@骄阳似火
已更新。
这个能自定义图片吗
@凡涛
默认是文章第一张图片,没有图片则不显示。