介绍
顺序是:thumb(自定义字段)--> 第一个图片附件--> 文章第一张图片 --> 随机图片输出
代码扒了Themia的主题
在function.php 加上这段代码
function showThumbnail($widget)
{
// 当文章无图片时的默认缩略图
$rand = rand(1,7); // 随机 1-7 张缩略图
$random = $widget->widget('Widget_Options')->themeUrl . '/images/sj/' . $rand . '.jpg'; // 随机缩略图路径
//正则匹配 主题目录下的/images/sj/的图片(以数字按顺序命名)
$cai = '';
$attach = $widget->attachments(1)->attachment;
$pattern = '/\<img.*?src\=\"(.*?)\"[^>]*>/i';
$patternMD = '/\!\[.*?\]\((http(s)?:\/\/.*?(jpg|png))/i';
$patternMDfoot = '/\[.*?\]:\s*(http(s)?:\/\/.*?(jpg|png))/i';
if ($attach && $attach->isImage) {
$ctu = $attach->url.$cai;
}
//调用第一个图片附件
else
//下面是调用文章第一个图片
if (preg_match_all($pattern, $widget->content, $thumbUrl)) {
$ctu = $thumbUrl[1][0].$cai;
}
//如果是内联式markdown格式的图片
else if (preg_match_all($patternMD, $widget->content, $thumbUrl)) {
$ctu = $thumbUrl[1][0].$cai;
}
//如果是脚注式markdown格式的图片
else if (preg_match_all($patternMDfoot, $widget->content, $thumbUrl)) {
$ctu = $thumbUrl[1][0].$cai;
}
//以上都不符合,即随机输出图片
else {
$ctu = $random;
}
return $ctu;
}
修改index.php 里面的代码
<?php if (array_key_exists('thumb',unserialize($this->___fields()))): ?>
<div class="index-post-thumb">
<a class="index-post-cover" href="<?php $this->permalink() ?>">
<img class="thumb" src="<?php echo $this->fields->thumb;?>">
</a>
</div>
<?php else : ?>
<?php $thumb = showThumbnail($this); if(!empty($thumb)):?>
<div class="index-post-thumb">
<a class="index-post-cover" href="<?php $this->permalink() ?>">
<img class="thumb" src="<?php echo $thumb;?>">
</a>
</div>
<?php endif; ?>
<?php endif; ?>
其中的第一段
if (array_key_exists('thumb',unserialize($this->___fields())))
用来判断是否有thumb 自定义字段。如果有,则输出自定义字段的图片地址。
8 条评论
pjax下的多说同步评论测试
回头我也把他的代码提取一下 看能不能做成一个插件出来
恩!加油奥!我一点不会typecho插件#(吐血倒地)
哦 这个跟我提取的LiNPX的主题内的代码有点类似 我也才刚发觉他的那部分代码可以自定义缩略图的 前几天还傻XX地以为只能默认第一张 修改第一张图片后得把后面的图片重新传一遍。。。
无尽的折腾啊,哈哈~
我也想在折腾中学点什么呢!#(献花)
这个主题以前也用过,好多撒花效果啊,我也折腾过。