Z-Blog 主题里的缩略图:Thumbs 取值与常见失效原因

· zblog · 阅读 12
摘要

列表页要显示缩略图,用 $article->Thumbs 看起来很简单,但实际跑起来经常是空数组。Thumbs 从哪来它的值是文章内容里所有 的 src 提取结果,在文章保存时生成。所以内容里没有图片,Thumbs 就是空。基本

列表页要显示缩略图,用 $article->Thumbs 看起来很简单,但实际跑起来经常是空数组。

Thumbs 从哪来

它的值是文章内容里所有 <img> 的 src 提取结果,在文章保存时生成。所以内容里没有图片,Thumbs 就是空。

基本用法

{if $article.Thumbs}
  <img src="{$article.Thumbs[0]}" alt="{$article.Title}">
{else}
  <img src="{$zbp->host}zb_users/theme/你的主题/images/default.jpg" alt="">
{/if}

模板里数组下标直接用 [0] 即可,不需要额外的函数。

失效的四种情况

  1. 老文章没有 Thumbs——字段是某个版本之后才引入的,之前的文章保存时没生成过。重新保存一次即可补上。
  2. 外链图片——src 是完整 URL 时能取到,但做本地缓存类功能时会被跳过。
  3. 懒加载属性——如果用的是 data-src 而不是 src,提取不到。
  4. 直接数据库导入的内容——没走保存流程,字段永远为空。

想要指定封面图

Thumbs 只认正文图片。想给文章单独设封面,要靠自定义字段(见 Metas 机制),在模板里优先读字段值,取不到再回退到 Thumbs。

尺寸建议

直接输出原图会拖慢列表页,来源图动辄几百 KB。稳妥做法是在模板里套一层裁切服务,或者落库时另存一份缩略尺寸。