Thumb
这是一款文章封面图自定义上传插件,传统自定义封面图都是通过文章自定义字段填写图片地址的方式,不是很优雅,所以这个插件就诞生了,它直接点击上传就行,目前我在售的主题Make
,Sola1.2.0
,Plain2.4.8
,Dinner2.3.3
,Sinner3.8.2
版本及以上均已自动适配,其他主题请按照文章下方适配方法进行适配。
插件注意事项
- 确保插件文件夹名字为
Thumb
,大小写也要一致 - 插件文件夹里面的
uploads
权限要可以写入,755
权限就可以。 - 插件升级要保留
uploads
文件夹新增或覆盖其他文件即可,因为图片都在uploads
文件夹下。 - 已经上传的文章封面图,在删除文章时会自动删除,不用担心无用图片堆积。
第三方主题适配
如果你用的不是以上主题,则需要修改自己主题文章封面图函数,在适当位置增加如下代码:
$name = md5(文章cid);
$file1 = ".".__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.webp';
$file2 = ".".__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.jpg';
if(file_exists($file1)){
$img=Helper::options()->rootUrl.__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.webp?'.filemtime($file1);
}
elseif(file_exists($file2)){
$img=Helper::options()->rootUrl.__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.jpg?'.filemtime($file2);
}
例如我的主题封面图函数改好后就是这个样子的
//文章缩略图函数
function showThumbnail($widget,$type=0)
{
$random = 'https://images.unsplash.com/photo-1533158307587-828f0a76ef46?crop=entropy&cs=tinysrgb&fit=max&fm=jpg&ixid=M3wzNDExMjB8MHwxfHNlYXJjaHwyNHx8cGhvdG98ZW58MHx8fHwxNjk3ODY4NDA5fDA&ixlib=rb-4.0.3&q=80&w=1080';//这里时默认缩略图
$pattern = '/\<img.*?\ssrc\=\"(.*?)\"[^>]*>/i';
$attach = $widget->widget('Widget_Contents_Attachment_Related@' . $widget->cid . '-' . uniqid(), array(
'parentId' => $widget->cid,'limit' => 1,'offset' => 0))->attachment;
$t=preg_match_all($pattern, $widget->content, $thumbUrl);
if(!$t){
$pattern = '/\<a.*?data\-xurl\=\"(.*?)\"[^>]*>/i';
$t=preg_match_all($pattern, $widget->content, $thumbUrl);
}
$img=$random;
$name = md5($widget->cid);
$file1 = ".".__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.webp';
$file2 = ".".__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.jpg';
if(file_exists($file1)){
$img=Helper::options()->rootUrl.__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.webp?'.filemtime($file1);
}
elseif(file_exists($file2)){
$img=Helper::options()->rootUrl.__TYPECHO_PLUGIN_DIR__."/Thumb/uploads/".$name.'.jpg?'.filemtime($file2);
}
elseif ($t && strpos($thumbUrl[1][0],'icon.png') == false && strpos($thumbUrl[1][0],'alipay') == false && strpos($thumbUrl[1][0],'wechat') == false) {$img = $thumbUrl[1][0];}//从文章中获取封面
elseif($widget->fields->thumb){$img=$widget->fields->thumb;}//自定义字段设置封面
elseif (@$attach->isImage) {$img=$attach->url;}//从附件中获取封面
if($type==0){
if($img==$random){echo $img;}else{echo $img.Helper::options()->thumbnail;}//输出封面图
}else{
if($img==$random){return $img;}else{return $img.Helper::options()->thumbnail;}//输出封面图
}
}
代码小白请忽略,改不明白的不负责售后哈。
更新历史
2024年7月28日发布1.1.3版本
修复一处代码重复书写的问题,旧版本升级此版本只需要替换插件文件夹里的三个php
文件
2024年5月27日发布1.1.2版本
修正图片上传体积过小问题。
2024年1月19日发布1.1.1版本
修复上版本图片转为webp
格式后图片后缀还是jpg
的问题,新增支持上传webp
格式图片。
2024年1月发布1.1.0版本
此版本会将上传的封面图自动转换为webp
格式,不想用webp
的可以继续用旧版本,插件更新务必看下文章上方的更新插件的注意事项。
2023年12月发布1.0.5版本
新增支持删除已上传的封面图,修复某些情况下同名图片无法上传的问题。插件更新务必看下文章上方的更新插件的注意事项。
2023年11月发布1.0.1版本
对没有开启伪静态情况进行兼容。
2023年10月发布1.0.0版本
第一个版本,实现了封面图的上传。
版权属于:泽泽社长
本文链接:https://store.typecho.work/archives/thumb-plugin.html
本站未注明转载的文章均为原创,并采用
CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
Thumb 这个插件会不会和WEBP 发生冲突
不会,Thumb插件没用
typecho
默认的上传接口,不会被我的那个ToWebp插件转换