Discuz模板|Discuz插件|Discuz教程|Discuz素材免费下载

 找回密码
 立即注册

QQ登录

只需一步,快速开始

广告
温馨提示:本站所有DZ相关模板、插件、教程(包括DZ应用中心已下架插件、模板)所有用户可全部免费下载,无任何收费模式(不包括VIP版块非DZ资源,VIP版块需购买会员组方可下载),如本站没有您需要的插件或模板,请自行前往淘宝互站网送吗网等第三方站点搜索相关插件或模板进行低价格购买下载本站非常不建议用户浪费金钱前往DZ应用中心购买。

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

[复制链接]
tuyuanma 发表于 2019-11-28 21:54:41 | 显示全部楼层 |阅读模式
温馨提醒:禁止内容附带广告图片、二维码图片,否则将在不通知情况下永久禁言账号!
欢迎加入兔源码站长交流群,您的加入是我们前行的动力!

DZ站长建站交流群:493651246

[ 温馨提示:点击上方群文字,可快速加入QQ群 ]


准确的说应该是调用多图,如果是一张图,直接设置封面即可,就不需要费这劲了。
( F5 C/ B" G5 m3 F. L; C6 J- A网上也有方法,不过我不喜欢他们的方式。  I/ Q; h5 u! u; }4 _8 B* U
代码可以直接写在模板forumdisplay_list.htm里,有不同数量不同样式。
; ]% j7 H3 A* t, P7 E5 m 1.png
! R" [6 D8 F: O9 G0 F以默认模板为例:6 W) a, r7 Z9 h9 ?
打开模板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]'"));}-->% J6 S% {$ T! l9 {3 ]8 C
  2. <!--{if $tbid}-->( b, T  G( o" }/ B% i; u! J
  3. <!--{eval $picount = DB::fetch_all("SELECT aid FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$thread[tid]' AND `isimage`=1;");}-->
    " X! K& n6 u, I* Y: m. H% h
  4. <!--{eval $picnum = count($picount);}-->
    $ I7 E6 N7 ~" ]. G% M! k
  5. <!--{if $picnum < 3}-->: k9 ~9 w0 b1 b8 ^0 X
  6. <!--{eval $litpicnum = '1';}-->- t3 \( s/ W: b- g& X+ N' C
  7. <!--{elseif $picnum > 2 && $picnum < 6}-->( q' }  D7 h! q' i) `; k+ M
  8. <!--{eval $litpicnum = '3';}-->6 A! J% \" s% u( P3 h7 X. P
  9. <!--{elseif $picnum > 5}-->* f8 u& G7 \3 k( F5 Z0 e) J7 e
  10. <!--{eval $litpicnum = '6';}-->( u8 c' J# w4 Y( Z
  11. <!--{/if}-->
      }1 B, N/ k* k4 m5 {/ z
  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;");}-->
    % P% C+ f1 \8 t) d
  13. <!--{/if}-->
复制代码
再查找
  1. <!-- end of table "forum_G[fid]" branch 1/3 -->
复制代码
其上最近的</tr>之后增加
  1. <!--{if $tbid}-->
    % G! c+ y0 f3 z/ {
  2. <tr>, n) n7 O1 f+ T: Q
  3. <td></td>; {) g! F6 ^* A3 G2 G
  4. <td></td>$ \- i6 ^, P  A4 M- H5 O
  5. <td colspan="4">8 @" [# K. o. t' H- ^  H0 [6 J
  6. <!--{loop $covers $thecover}-->, T+ l- z  ~) N2 |2 Q. z2 i
  7. <!--{if $litpicnum == 1}-->
    - c2 V+ ?6 E. t6 Q
  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>
    2 n# {5 @4 R- D5 r
  9. <font class="z">This is what it is like to be with Trump.</font>! @( r# n; `4 a# [! g
  10. <!--{else}-->' G2 i! a) j2 _& u0 t/ e
  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>$ c6 g/ n' M4 x! t$ i
  12. <!--{/if}-->$ J. g) S# P: U7 p) H
  13. <!--{/loop}-->% C. Z! r% V" e5 R8 V, ~% q: n
  14. </td>- v) W2 o2 N- b! P9 Q+ Q( A
  15. </tr>
    + Z. a, p1 s3 M) k' F6 d
  16. <!--{/if}-->
复制代码
再找到
  1. <!--{if !$thread['forumstick'] && ($thread['isgroup'] == 1 || $thread['fid'] != $_G['fid'])}-->
    ) s% G3 ^/ A( ?0 G" a+ r
  2. <!--{if $thread['related_group'] == 0 && $thread['closed'] > 1}-->
    , p$ I" \: J2 f4 |& E; x- l5 F
  3. <!--{eval $thread[tid]=$thread[closed];}-->
    + L4 P2 b! t5 }+ h
  4. <!--{/if}-->2 \1 v6 E& n3 d4 r, F
  5. <!--{if $groupnames[$thread[tid]]}-->$ b- ]8 k; y8 B, j. {8 w
  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>
    - c# |* ~5 g9 V! B4 H
  7. <!--{/if}-->3 Y7 |* u  a0 `' Q2 z3 S
  8. <!--{/if}-->
复制代码
其下增加
  1. <!--{if $tbid && !$picnum == 0}--><span style="color:red;"><!--{$picnum}-->P</span><!--{/if}--></a>
复制代码
结束。
8 s7 V& |( \/ K3 Q# J具体的图片显示多少这里↓,<3显示1,>2且<6显示3,>5显示6。
  1. <!--{if $picnum < 3}-->
    7 m9 l: V3 b% B- }
  2. <!--{eval $litpicnum = '1';}-->
    6 b8 M5 _% H8 @) q; p  ?4 c+ |- j0 k
  3. <!--{elseif $picnum > 2 && $picnum < 6}-->
    + I* \  t/ `# h
  4. <!--{eval $litpicnum = '3';}-->8 ?# T% s- i) p3 Y( D' ]
  5. <!--{elseif $picnum > 5}-->
    : e7 e, ~5 A% X
  6. <!--{eval $litpicnum = '6';}-->
    " }  c8 b2 h8 i: C: F
  7. <!--{/if}-->
复制代码
这个是匆忙写的,没注意有没有逻辑漏洞,如有错请提出。1 K$ j8 N8 b; H; Z: B* V

0 [; R$ S4 u+ S+ \7 `后面具体的样式是这段↓
  1. <!--{if $litpicnum == 1}-->7 O0 r/ z: V( O* x( L# W: Q
  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>) Y) b5 y2 e! E3 B. D: \# e
  3. <font class="z">This is what it is like to be with Trump.</font>
    . z# g' r; N+ p) A1 V
  4. <!--{else}-->1 j. j8 q8 T: @; M4 `% Q- `
  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>. D9 y' J) s4 w1 F8 z+ x
  6. <!--{/if}-->
复制代码
如果图片数量等于1,后面带个摘要。
+ k5 w. p% ]. s& O否则图片横排铺开。具体数量会按上面的显示。* x/ G/ D% t: o+ Z( I

$ D( k$ G% ?$ M3 g' \通常情况下,两种样式即可,1图和多图,即1图显示在左右,多图在下面铺开。8 m, w. z* r% [, |. Z1 r
如果多种样式,<!--{if $litpicnum == 数量}-->此数量时的表现形式</if>
2 ]+ H4 [. ^9 w' R% b: \# C: t' _当然,这的数量$litpicnum是受上面的代码中与$picnum关系的限定。
+ k( M5 {. l) z' Q4 |( B. k$picnum是实际总数量,$litpicnum是经过判断后允许显示的数量。% ?4 `: u1 e) i: f/ P9 ~) t, [

$ ?0 X: C3 {! [+ D* u8 s. I要下班了,写的差不多啦,stop here!; `; }, V) ?( w& M5 M5 l4 t
0 x+ c  p1 ?/ V$ l
才知道一个鬼问题,不需要查询附件索引表,附件分表id就是帖子id最后一位。4 U# a+ Z7 c: s

; }( V. p# K, e# s+ x如果“无图帖子”调用图片出了点问题,本来是无图帖子,却调用了临近上1条帖子的全部图片……
/ @/ H( z9 Q4 h9 L试试给<tr></tr>部分外层加上<!--{if $covers}--><!--{/if}-->,代码如下
  1. <!--{if $covers}-->
    5 A, A$ b2 ^9 f4 [/ c' `
  2. <tr>
    % N; _% q4 }& B* J* S" K
  3.     <td></td>
    : R$ I5 O2 Q6 N2 S$ I6 {% d
  4.     <td></td>
    9 e" u/ `: S6 o
  5.     <td>$ |1 O) b! M; S0 b, h" X
  6.     <!--{loop $covers $thecover}-->! R# I; @  M$ g5 t
  7.     <!--{if $litpicnum == 1}-->( E( j. n- ]1 Z1 A
  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 x9 T  N! s  Y4 [. _0 u
  9.     <font class="z">This is what it is like to be with Trump.</font>) |; X6 y4 x' i1 |; \9 y. \& n
  10.     <!--{else}-->
    # z! W7 O' I9 P. [1 g! {+ h4 a) N
  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>
    ' T* Y6 t8 n1 h+ B
  12.     <!--{/if}-->
      @* T. d0 D8 B/ U! G0 l5 D
  13.     <!--{/loop}-->  `# e- ?  I; u& b% H
  14.     </td>. A  d! S9 t. P4 L" r# j, O0 v
  15.     </tr>1 ~' e4 @8 I/ X- ?* {- I
  16. <!--{/if}-->
复制代码
意思是如果这个帖子没图片附件,这个<tr>就不让它显示。
' U( p# J0 _  P, B$ g3 x
% Y; D0 Z, S. n! {6 x
- l! j7 a6 ^7 S! C% K/ x( C2 a如果正常情况下,咱们这个代码是没问题的,包括0图、1图、10图等都正常,但是在某个帖子有“新人贴、置顶、精华、热门”等标签的时候,就出现“图片错调”的问题。再具体点的问题描述比如,我注册了个新账号,发了个“0图新人贴”,系统自动打上了“新人贴”标签,结果它就自动调取了附近一条“1图”帖子的图,再比如,我把一条“0图”帖子全局置顶,然后之后发布的所有0图帖子,都开始调用附近的帖子的图片。我猜测,咱们是不是要加个什么判断,去除“新人贴、置顶、精华、热门”等标签的影响?4 {' ^2 }! U/ i0 [2 V5 U

1 P9 t5 M6 {  E% k. ?7 q用if $covers判断不行,就换成if $tbid4 s% [2 o, ~; `
图片数量显示代码换成:
  1. <!--{if $tbid && !$picnum == 0}--><span style="color:red;"><!--{$picnum}-->P</span><!--{/if}--></a>
复制代码
图片loop部分换成:
  1. <!--{if $tbid}-->
    1 F5 c% {; P+ f7 U( I8 ^- ^- H
  2. <tr>' M0 k  L5 z) f& K) @
  3. <td></td>: c0 C7 ?  g* f+ f% n$ ]
  4. <td></td>
    + S6 E6 t5 N: M1 m
  5. <td>! Q. i4 L; q# Y; o4 z
  6. <!--{loop $covers $thecover}-->9 P! b" h) Z, i4 ~
  7. <!--{if $litpicnum == 1}-->
    3 C1 @+ b% P0 Q1 V( ]& i$ X
  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>+ e. _4 ?* \% T& B; M- t
  9. <font class="z">This is what it is like to be with Trump.</font>% L8 Z: F3 K0 s0 E% b# t! o
  10. <!--{else}-->
    8 T! ]) `+ p/ f  u+ x2 r5 X5 U
  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>- I+ d$ Q' s: T! ?. V4 X0 r, [2 ~
  12. <!--{/if}-->! c: P; s! W8 W' ~+ e5 I9 o9 g
  13. <!--{/loop}-->2 w" r: e8 }# {1 e- b/ `8 V
  14. </td>5 O( p! \5 A, q3 c6 I
  15. </tr>
    ! F0 F! V. q* }3 ~; }+ F
  16. <!--{/if}-->
复制代码
6.jpg 如果需要之查询一次,则将代码换成
  1. <!--{eval $tbid=substr($thread['tid'], -1);}-->
复制代码
获取到附件分表id,获取代码是
  1. <!--{eval $tbid = DB::result(DB::query("SELECT tableid FROM ".DB::table('forum_attachment')." WHERE `tid`= '$_G[tid]'"));}-->
复制代码
或者更简单一点
  1. <!--{eval $tbid=substr($_G['tid'], -1);}-->
复制代码

版权声明
1、转摘或引用本站内容资源须注明原网址,并标明本站网址(兔源码www.tuyuanma.com);
2、对于转摘或引用本站内容资源而引起的民事纠纷、行政处罚或其他损失,本站不承担责任;
3、对于不遵守本声明或其他违法、恶意使用本站内容者,本站保留其追究法律责任的权利。




自动排版 | 高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广告
493651246站长邮箱:tuyuanma@qq.com 站长QQ:3197813386

© 2001-2013 本站内容皆来自互联网及用户分享,如需删除请提供软著或商标证书。

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