discuz教程:帖子列表页调用帖子图片附件

来源:互联网  时间:2018-01-10    阅读:   我要吐槽    阿里云幸运券

准确的说应该是调用多图,如果是一张图,直接设置封面即可,就不需要费这劲了。

网上也有方法,不过我不喜欢他们的方式。

代码可以直接写在模板forumdisplay_list.htm里,有不同数量不同样式。

以默认模板为例:

打开模板forum/forumdisplay_list.htm,找到83行左右:

  1. <!--{loop $_G['forum_threadlist'] $key $thread}--> 

在其下增加

  1. <!--{eval $tbid = DB::result(DB::query("SELECT tableid FROM ".DB::table('forum_attachment')." WHERE `tid`= '$thread[tid]'"));}--> 
  2. <!--{if $tbid}--> 
  3. <!--{eval $picount = DB::fetch_all("SELECT aid FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$thread[tid]' AND `isimage`=1;");}--> 
  4. <!--{eval $picnum = count($picount);}--> 
  5. <!--{if $picnum < 3}--> 
  6. <!--{eval $litpicnum = '1';}--> 
  7. <!--{elseif $picnum > 2 && $picnum < 6}--> 
  8. <!--{eval $litpicnum = '3';}--> 
  9. <!--{elseif $picnum > 5}--> 
  10. <!--{eval $litpicnum = '6';}--> 
  11. <!--{/if}--> 
  12. <!--{eval $covers = DB::fetch_all("SELECT attachment,aid,description FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$thread[tid]' AND `isimage`=1 LIMIT 0,$litpicnum;");}--> 
  13. <!--{/if}--> 

再查找

  1. <!-- end of table "forum_G[fid]" branch 1/3 --> 

其上最近的</tr>之后增加

  1. <!--{if $tbid}--> 
  2. <tr> 
  3. <td></td> 
  4. <td></td> 
  5. <td colspan="4"
  6. <!--{loop $covers $thecover}--> 
  7. <!--{if $litpicnum == 1}--> 
  8. <a href="forum.php?mod=viewthread&tid=$thread[tid]" class="z pipe" title="$thecover[aid]"><img src="data/attachment/forum/$thecover['attachment']" width="100" height="100"/></a> 
  9. <font class="z">This is what it is like to be with Trump.</font> 
  10. <!--{else}--> 
  11. <a href="forum.php?mod=viewthread&tid=$thread[tid]" class="z pipe" title="$thecover[aid]"><img src="data/attachment/forum/$thecover['attachment']" width="100" height="100"/></a> 
  12. <!--{/if}--> 
  13. <!--{/loop}--> 
  14. </td> 
  15. </tr> 
  16. <!--{/if}--> 

再找到

  1. <!--{if !$thread['forumstick'] && ($thread['isgroup'] == 1 || $thread['fid'] != $_G['fid'])}--> 
  2. <!--{if $thread['related_group'] == 0 && $thread['closed'] > 1}--> 
  3. <!--{eval $thread[tid]=$thread[closed];}--> 
  4. <!--{/if}--> 
  5. <!--{if $groupnames[$thread[tid]]}--> 
  6. <span class="fromg xg1"> [{lang from}: <a href="forum.php?mod=group&fid={$groupnames[$thread[tid]][fid]}" target="_blank" class="xg1">{$groupnames[$thread[tid]][name]}</a>]</span> 
  7. <!--{/if}--> 
  8. <!--{/if}--> 

其下增加

  1. <!--{if $tbid && !$picnum == 0}--><span style="color:red;"><!--{$picnum}-->P</span><!--{/if}--></a> 

结束。

具体的图片显示多少这里↓,<3显示1,>2且<6显示3,>5显示6。

  1. <!--{if $picnum < 3}--> 
  2. <!--{eval $litpicnum = '1';}--> 
  3. <!--{elseif $picnum > 2 && $picnum < 6}--> 
  4. <!--{eval $litpicnum = '3';}--> 
  5. <!--{elseif $picnum > 5}--> 
  6. <!--{eval $litpicnum = '6';}--> 
  7. <!--{/if}--> 

这个是匆忙写的,没注意有没有逻辑漏洞,如有错请提出。

后面具体的样式是这段↓

  1. <!--{if $litpicnum == 1}--> 
  2. <a href="forum.php?mod=viewthread&tid=$thread[tid]" class="z pipe" title="$thecover[aid]"><img src="data/attachment/forum/$thecover['attachment']" width="100" height="100"/></a> 
  3. <font class="z">This is what it is like to be with Trump.</font> 
  4. <!--{else}--> 
  5. <a href="forum.php?mod=viewthread&tid=$thread[tid]" class="z pipe" title="$thecover[aid]"><img src="data/attachment/forum/$thecover['attachment']" width="100" height="100"/></a> 
  6. <!--{/if}--> 

如果图片数量等于1,后面带个摘要,否则图片横排铺开。具体数量会按上面的显示。

通常情况下,两种样式即可,1图和多图,即1图显示在左右,多图在下面铺开,如果多种样式,<!--{if $litpicnum == 数量}-->此数量时的表现形式</if>。

当然,这的数量$litpicnum是受上面的代码中与$picnum关系的限定,$picnum是实际总数量,$litpicnum是经过判断后允许显示的数量。

Tags:帖子  附件  教程  discuz  

参与讨论