zblog调用文中第一张图片作为缩略图的设计代码

行知平面设计1个月前 ( 05-25 )5075

昨天更新了锦鲤主题模板,网友反馈说文章插入视频之后会出现错版,网站整个都是乱的,随后看了下源代码,没什么太大问题,就是缩略图调用的时候出现了问题,错误的抓取了mp4格式的文件,然后去查看缩略图插件代码,发现没什么问题,再仔细对照官方给出的代码,确定是没有问题了,但是文章视频放在首位就是各种出错,一时间陷入了尴尬的局面。

image.png

没办法了只好暂时删除了位于head里的360搜索出图的代码,暂时解决错位问题,但是我在本地测试的时候,问题还是文在,比如无法生成海报,因为获取的还是mp4的文件,根据网友反馈直接在文章上传视频的时候就没有问题,外链的mp4(不仅仅mp4基本视频类都如此)文件就不行,再一次陷入僵局。。。

内心慌得一批,搞什么鬼,代码官方给的不可能出错(我还是太天真,太信任官方了),然后群里求助,自己又测试了几款其他主题,基本都是这个BUG,最后测试@橙色阳光大神的主题才拨云见日,豁然开朗啊,问题就出现在官方代码正则表达式,修改之后如下:

完整版代码如下:

//默认缩略图function 主题ID_firstimg($article) {    global $zbp;    $randnum = mt_rand(1,9);    $pattern = "/<img.*?src=[\'|\"](.*?)[\'|\"].*?[\/]?>/i";    $content = $article->Content;    preg_match_all($pattern,$content,$matchContent);    if (isset($matchContent[1][0])) {        $temp = $matchContent[1][0];    } else {        $temp = $zbp->host."zb_users/theme/主题ID/style/noimg/" . $randnum . ".jpg";    }    return $temp;}

 这代码就是获取文中第一张图片,如果文中没有图片则随机显示一张照片,随机照片需要在style目录下新建一个noimg文件夹,然后自己设置1-9张图片,后缀是.jpg,例如(1.jpg,2.jpg等)。

如果您的站已经有代码,那么需要替换下源代码,如果无效最好重新启用下其他主题,然后在切换正常使用的主题即可。

查找

$pattern="/<[img|IMG].*?src=[\'|\"](.*?(?:[\.gif|\.jpg|\.png]))[\'|\"].*?[\/]?>/";

替换成

$pattern = "/<img[^>]*src=\"([^\"]+\.(gif|jpg|png|jpeg|jpe|bmp|webp))\"[^>]*>/i";

保存,然后重新启用主题,清空缓存编译,前台刷新,一切回归正常~~~

PS:主题模板均已修复请等待更新。

The End