DZ原生代码交流学习,买插件不如自己动手解决
 
发新帖
楼主: 天启
查看: 1879|回复: 0

[教程] Discuz搜索页调用帖子内附件图片(完美无缓存缩略图)

[复制链接]
天启VIP6 发表于 2019-10-17 15:36:57 | 显示全部楼层
众所周知有很多DZ的插件可以在搜索结果页调用帖子内的图片,无非就是2种:
第一种:是调用帖子封面图片,通过调用远程附件图片缓存到本地,这种方法只适合数据小的网站,帖子数据如果多话OSS上存放原图一份(占用较大),本地又有一份封面(而搜索都是调用本地的,那么就突显不出来OSS的分流特色了)
第二种:是调用帖子内的图片,通过调用远程附件图片缓存到本地形成缩略图,这种方法只适合刚搭建的新型网站,运营一年以上的网站数据绝对顶不住,通过缩略图1-3张,相比第1种方法还是比较占用本地空间,OSS无限空间的特色也就不复存在了且也无法突显OSS分流好处了

下面教大家既不花钱又好的方法,下面这段代码是获取帖子内的远程图片且不产生任何本地缓存和缩略图,直接调用远程图片
  1. <!--{eval $thread['imagelist'] = C::t('forum_attachment_n')->fetch_all_by_id('tid:'.$thread['tid'], 'tid', $thread['tid'], '', true);}-->
复制代码

通过下面代码判断来判断每个帖子内是否有图片
  1. <!--{if $thread[imagelist]}--><!--{/if}-->
复制代码

如果帖子内有图片则使用下面的循环代码全部循环出来
  1. <!--{loop $thread[imagelist]  $key $val}-->
  2. <!--{eval $listk++;}-->
  3. <!--{if $listk>4}-->
  4. <!--{eval break;}-->
  5. <!--{/if}-->
  6. <img src="//远程OSS图片地址/forum/{$val[attachment]}">
  7. <!--{/loop}-->
复制代码
这里的"$listk"是指只取前面4张图片(4张图片为一行),如果帖子内图片较多只取4张,从第5张就跳出循环了

上面代码相信可以帮助很多DZ站长,节省费用又能从根本解决问题,还不关注我?

快速回复 返回顶部 返回列表