收藏本帖 楼主热帖
  • 去顶部
  • 206 次浏览
  • 0 次回复
  • 0 次收藏
  • 0 次点赞
  • 去底部

discuz 门户首页调用帖子列表带分页+多图显示

  1. Seven
    先做说明再贴代码。
    这和之前贴的分页效果是相同的,因为加了多图调用,所以再贴一下。
    模板代码中使用了font awesome 4.5.0图标。
    本帖持续更新,不断完善,没贴css,太长。
    1.页面顶部放:
    1. <!--{eval require './source/function/function_post.php';}-->
    2. <!--{eval require './config/config_global.php';}-->
    3. <!--{eval $prefix=$_config['db']['1']['tablepre'] }-->
    4. <!--{eval $pagesize = 15;}-->
    5. <!--{eval $amount=0;}-->
    6. <!--{eval $res = mysql_query("SELECT COUNT(*) as count FROM ".$prefix."forum_thread t1 LEFT OUTER JOIN  ".$prefix."forum_threadimage t3 ON t1.tid = t3.tid WHERE t1.displayorder >- 1 AND t3.attachment <> ''");}-->
    7. <!--{eval while($re=mysql_fetch_array($res)) $amount=$re['count']}-->
    8. <!--{eval $pagecount = $amount ? (($amount < $pagesize) ? 1 : (($amount % $pagesize) ? ((int)($amount / $pagesize) + 1) : ($amount / $pagesize))) : 0; }-->
    9. <!--{eval $page = !empty($_G['gp_page']) ? max(1, intval($_G['gp_page'])) : 1;}-->
    10. <!--{eval $page = $page > $pagecount ? 1 : $page;}-->
    11. <!--{eval $startlimit = ($page - 1) * $pagesize;}-->
    12. <!--{eval $multipage = multi($amount, $pagesize, $page, 'portal.php?', $pagecount);}-->
    13. <!--{eval $res = mysql_query("SELECT t1.tid,t1.digest,t1.fid,t2.`name`,t1.author,t1.authorid,t1.`subject`,t4.message,t1.views,t1.replies from_unixtime(t1.dateline) as dateline,t3.attachment FROM ".$prefix."forum_thread t1 LEFT OUTER JOIN  ".$prefix."forum_forum t2 ON t1.fid = t2.fid LEFT OUTER JOIN  ".$prefix."forum_threadimage t3 ON t1.tid = t3.tid LEFT OUTER JOIN  ".$prefix."forum_post t4 ON t1.tid = t4.tid WHERE t1.displayorder >- 1<> '' AND t4.`first` > 0 ORDER BY t1.dateline DESC LIMIT $startlimit, $pagesize");}-->
    复制代码

    列表调用:
    1. <link href="$_G['style'][styleimgdir]/css/fsgallery.css" rel="stylesheet">
    2. <link href="$_G['style'][styleimgdir]/css/font-awesome.min.css" rel="stylesheet">
    3. <script type="text/javascript" src="$_G['style'][styleimgdir]/js/fs_forse.js"></script>
    4. <script src="$_G['style'][styleimgdir]/js/my.js" type="text/javascript"></script>
    5. <h2 class="g_tit">最新发布<li id="qinghideimg" {if $_G['cookie']['qinghideimg'] > 0}onclick="hideimg(1)"{else}onclick="hideimg(-1)" class="y qinghideimg_1" {/if}><i></i>图文</li></h2>
    6. <ul class="ui_list cl" id="itemContainer">
    7. <!--{eval while($re1=mysql_fetch_array($res)) {}-->
    8. <!--{eval}-->            
    9. $acount = DB::result(DB::query("SELECT count(*) FROM ".DB::table('common_tagitem')." b LEFT JOIN ".DB::table('common_tag')." bf ON bf.tagid=b.tagid WHERE b.itemid='$re1[tid]' group by b.tagid"));
    10. //$alist
    11. $taglists = array();
    12. if ($acount) {
    13. $tag = DB::query("SELECT  bf.*, b.* FROM ".DB::table('common_tagitem')." b LEFT JOIN ".DB::table('common_tag')." bf ON bf.tagid=b.tagid WHERE b.itemid='$re1[tid]' group by b.tagid  ORDER BY b.tagid DESC ");
    14. while ($tags = DB::fetch($tag)) {
    15. $taglists[] = $tags;
    16. }
    17. }
    18. <!--{/eval}-->
    19. <!--{eval $tbid = DB::result(DB::query("SELECT tableid FROM ".DB::table('forum_attachment')." WHERE `tid`= '$re1[tid]'"));}-->
    20. <!--{if $tbid}-->
    21. <!--{eval $picount = DB::fetch_all("SELECT aid FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$re1[tid]' AND `isimage`=1;");}-->
    22. <!--{eval $picnum = count($picount);}-->
    23. <!--{if $picnum < 4}-->
    24. <!--{eval $litpicnum = '1';}-->
    25. <!--{elseif $picnum > 3 && $picnum < 8}-->
    26. <!--{eval $litpicnum = '4';}-->
    27. <!--{elseif $picnum > 7}-->
    28. <!--{eval $litpicnum = '8';}-->
    29. <!--{/if}-->
    30. <!--{if $picnum>0}-->
    31. <!--{eval $covers = DB::fetch_all("SELECT attachment,aid,description FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$re1[tid]' AND `isimage`=1 LIMIT 0,$litpicnum");}-->
    32. <!--{/if}-->
    33.     <li class="ui_2_ul_li  cl border_b_gray">
    34.         <!--{if $litpicnum == 1}-->
    35.         <div class="ui_2_ul_li_imgouter  ovh position_a <!--{if $_G['cookie']['qinghideimg'] > 0}-->qnone_-1<!--{else}-->qnone_1<!--{/if}-->" id="gallery_$re1[tid]">
    36.             <!--{loop $covers $thecover}-->
    37.             <!--{eval $imagelistkey = getforumimg($thecover[aid], 0, 225, 0); }-->
    38.             <a id="aimg_$thecover['aid']" aid="$thecover['aid']" target="_blank" class="flt ds_inlineB cdg" href="data/attachment/forum/$thecover['attachment']" <!--{if $thecover['description']}-->title="$thecover['description']"<!--{else}-->title="$re1[subject](图$keys)"<!--{/if}-->><img src="$imagelistkey" height="auto" width="200" <!--{if $thecover['description']}-->alt="$thecover['description']" title="$thecover['description']"<!--{else}-->alt="$re1[subject](图$keys)" title="$re1[subject](图$keys)"<!--{/if}-->></a>
    39.             <!--{/loop}-->
    40.         </div>
    41.         <script language="javascript">
    42.             jQuery(document).ready(function() {
    43.             jQuery("#gallery_$re1['tid'] img").fsgallery()
    44.             })
    45.         </script>
    46.         <div class="ui_2_ul_li_con lcon">
    47.             <h3 class="clr"><a target="_blank" href="forum.php?mod=viewthread&tid=$re1[tid]" title="$re1[subject]" class="ui_colorG">$re1[subject]</a><!--{if !$picnum == 0}--><small><i class="fa fa-image fa-fw"></i><!--{$picnum}--></small><!--{/if}--></h3>
    48.             <p class="cdg ovh"><!--{eval echo messagecutstr($re1['message'],150)}-->...</p>
    49.             <div class="ui_2_userinfo  clg cl">
    50.                 <span><a href="forum.php?mod=forumdisplay&fid=$re1[fid]" class="article-info-cat z">$re1[name]</a></span>
    51.                 <span class="xfg">/</span>
    52.                 <span class="authors"><a href="home.php?mod=space&uid=$re1[authorid]">$re1[author]</a></span>
    53.                 <span class="xfg">/</span>
    54.                 <span>$re1[dateline]</span>
    55.                 <span class="xfg">/</span>
    56.                 <span class="views" title="已浏览$re1[views]次">$re1[views]</span>
    57.                 <span class="xfg"></span>
    58.                 <span class="replies" title="已有$re1[replies]条评论">$re1[replies]</span>
    59.                 <!--{if $re1['digest'] == 1}-->
    60.                 <span class="xfg">/</span>
    61.                 <span><i class="fa fa-diamond fa-fw" title="精华"></i>精华</span>
    62.                 <!--{/if}-->
    63.                 <span class="xfg">/</span>
    64.                 <em class="ptg xc_tag"><i class="fa fa-tag fa-fw"></i>
    65.                 <!--{loop $taglists $key $tags}-->
    66.                 <a title="$tags[tagname]"
    67. href="misc.php?mod=tag&amp;id=$tags[tagid]"
    68. target="_blank">$tags[tagname]</a>
    69.                 <!--{/loop}-->
    70.                 </em>
    71.             </div>
    72.         </div>
    73.     <!--{else}-->
    74.     <div class="ui_2_ul_li_con">
    75.         <h3 class="clr"><a target="_blank" href="forum.php?mod=viewthread&tid=$re1[tid]" title="$re1[subject]" class="ui_colorG">$re1[subject]</a><!--{if !$picnum == 0}--><small><i class="fa fa-image fa-fw"></i><!--{$picnum}--></small><!--{/if}--></h3>
    76.         <p class="cdg ovh"><!--{eval echo messagecutstr($re1['message'],150)}-->...</p>
    77.         <div class="ui_2_ul_li_imgouter  ovh position_a <!--{if $_G['cookie']['qinghideimg'] > 0}-->qnone_-1<!--{else}-->qnone_1<!--{/if}-->" id="gallery_$re1[tid]">
    78.             <!--{loop $covers $key $thecover}-->
    79.             <!--{eval $keys = $key+1;}-->
    80.             <!--{eval $imagelistkey = getforumimg($thecover[aid], 0, 225, 0); }-->
    81.             <a id="aimg_$thecover['aid']" aid="$thecover['aid']" target="_blank" class="flt ds_inlineB cdg" href="data/attachment/forum/$thecover['attachment']" title="<!--{if $thecover['description']}-->$thecover['description']<!--{else}-->$re1[subject](图$keys)<!--{/if}-->"><img src="$imagelistkey" height="auto" width="200" <!--{if $thecover['description']}-->alt="$thecover['description']" title="$thecover['description']"<!--{else}-->alt="$re1[subject](图$keys)" title="$re1[subject](图$keys)"<!--{/if}-->></a>
    82.             <!--{/loop}-->
    83.         </div>
    84.         <script language="javascript">
    85.             jQuery(document).ready(function() {
    86.             jQuery("#gallery_$re1['tid'] img").fsgallery()
    87.             })
    88.         </script>
    89.         <div class="ui_2_userinfo  clg cl">
    90.             <span><a href="forum.php?mod=forumdisplay&fid=$re1[fid]" class="article-info-cat z">$re1[name]</a></span>
    91.             <span class="xfg">/</span>
    92.             <span class="authors"><a href="home.php?mod=space&uid=$re1[authorid]">$re1[author]</a></span>
    93.             <span class="xfg">/</span>
    94.             <span>$re1[dateline]</span>
    95.             <span class="xfg">/</span>
    96.             <span class="views" title="已浏览$re1[views]次">$re1[views]</span>
    97.             <span class="xfg"></span>
    98.             <span class="replies" title="已有$re1[replies]条评论">$re1[replies]</span>
    99.             <!--{if $re1['digest'] == 1}-->
    100.             <span class="xfg">/</span>
    101.             <span><i class="fa fa-diamond fa-fw" title="精华"></i>精华</span>
    102.             <!--{/if}-->
    103.             <span class="xfg">/</span>
    104.             <em class="ptg xc_tag"><i class="fa fa-tag fa-fw"></i>
    105.             <!--{loop $taglists $key $tags}-->
    106.             <a title="$tags[tagname]" href="misc.php?mod=tag&amp;id=$tags[tagid]" target="_blank">$tags[tagname]</a>
    107.             <!--{/loop}-->
    108.             </em>
    109.         </div>
    110.     </div>
    111.     <!--{/if}-->
    112. </li>
    113. <!--{else}-->
    114.     <li class="ui_2_ul_li  cl border_b_gray">
    115.         <div class="ui_2_ul_li_con lcon">
    116.             <h3 class="clr"><a target="_blank" href="forum.php?mod=viewthread&tid=$re1[tid]" title="$re1[subject]" class="ui_colorG">$re1[subject]</a></h3>
    117.             <p class="cdg ovh"><!--{eval echo messagecutstr($re1['message'],150)}-->...</p>
    118.             <div class="ui_2_userinfo  clg cl">
    119.                 <span><a href="forum.php?mod=forumdisplay&fid=$re1[fid]" class="article-info-cat z">$re1[name]</a></span>
    120.                 <span class="xfg">/</span>
    121.                 <span class="authors"><a href="home.php?mod=space&uid=$re1[authorid]">$re1[author]</a></span>
    122.                 <span class="xfg">/</span>
    123.                 <span>$re1[dateline]</span>
    124.                 <span class="xfg">/</span>
    125.                 <span class="views" title="已浏览$re1[views]次">$re1[views]</span>
    126.                 <span class="xfg"></span>
    127.                 <span class="replies" title="已有$re1[replies]条评论">$re1[replies]</span>
    128.                 <!--{if $re1['digest'] == 1}-->
    129.                 <span class="xfg">/</span>
    130.                 <span><i class="fa fa-diamond fa-fw" title="精华"></i>精华</span>
    131.                 <!--{/if}-->
    132.                 <span class="xfg">/</span>
    133.                 <em class="ptg xc_tag"><i class="fa fa-tag fa-fw"></i>
    134.                 <!--{loop $taglists $key $tags}-->
    135.                 <a title="$tags[tagname]" href="misc.php?mod=tag&amp;id=$tags[tagid]" target="_blank">$tags[tagname]</a>
    136.                 <!--{/loop}-->
    137.                 </em>
    138.             </div>
    139.         </div>
    140.     </li>
    141. <!--{/if}-->
    142. <!--{eval }}-->
    143. </ul>
    144. <div class="cl" style="background: #FFFFFF;">
    145.     <div id="holder" class="holder">$multipage</div>
    146. </div>
    复制代码

    以上这两段就够了。
    ---------------------------------------------------------------------------------------------------
    解释下这个列表里的多图,写有点乱,我写完再看都蒙圈:
    1. <!--{eval $tbid = DB::result(DB::query("SELECT tableid FROM ".DB::table('forum_attachment')." WHERE `tid`= '$re1[tid]'"));}-->
    复制代码

    是用帖子tid获取对应的表tableid。
    接下来开始判断:
    1. <!--{if $tbid}-->
    复制代码

    即如果存在tid,开始调用列表。原本没写这个判断,导致出错,获取不到附件分表id,琢磨好久才想到,没有附件的帖子就没有tableid,后面的查询找不到表。
    接下来要先获取下每个帖子的图片附件数:
    1. <!--{eval $picount = DB::fetch_all("SELECT aid FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$re1[tid]' AND `isimage`=1;");}-->
    2. <!--{eval $picnum = count($picount);}-->
    复制代码

    得到变量$picnum,直接使用就可以显示图片数,这里拿它做判断:
    1. <!--{if $picnum < 4}-->
    2. <!--{eval $litpicnum = '1';}-->
    3. <!--{elseif $picnum > 3 && $picnum < 8}-->
    4. <!--{eval $litpicnum = '4';}-->
    5. <!--{elseif $picnum > 7}-->
    6. <!--{eval $litpicnum = '8';}-->
    7. <!--{/if}-->
    复制代码

    大于等于不会写,只好退一步用大于和小于来判断图片数:
    <ul><li>如果小于4张,即只有1、2、3张,变量$litpicnum=1。</li><li>如果图片大于3张且小于8张,即4、5、6、7张,变量$litpicnum=4。</li><li>如果图片大于7张,即8张及8张以上,变量$litpicnum=8。到此为止不再判断,即最多让它显示8张。<br>
    </li></ul>

    这个变量$litpicnum下面要用,作为每帖调用的图片数,即LIMIT 0,$litpicnum
    # 说下为何做这个图片数量判断,因为我的测试列表一排最多显示4张图,当图片数量不能铺满一行时,样式不好看。这个判断不能有逻辑错误,否则数量正好赶上空挡就出错。
    下面是查询分表的的图片附件地址和aid,条数使用上面经过判断的变量$litpicnum
    1. <!--{eval $covers = DB::fetch_all("SELECT attachment,aid FROM ".DB::table('forum_attachment_'.$tbid.'')." WHERE `tid`= '$re1[tid]' AND `isimage`=1 LIMIT 0,$litpicnum;");}-->
    复制代码

    判断下,如果只有一张图或多张图,示例:
    1. <!--{if $litpicnum == 1}-->单图列表html<!--{else}-->多图列表html<!--{/if}-->
    复制代码

    接下来是无图帖子,(对应开始的<!--{if $tbid}-->)
    1. <!--{else}-->无图帖子列表<!--{/if}-->
    复制代码

    哦,对了还有,帖子标题后面我都加了段代码:
    1. <!--{if !$picnum == 0}--><small><i class="fa fa-image fa-fw"></i><!--{$picnum}--></small><!--{/if}-->
    复制代码

    如果有图,就显示数量。
    总结起来就是两层列表,3层判断:
    外有帖子列表,内有帖子图片列表
    关于图片列表获得流程:先判断帖子是否有图,有图再获取总张数,根据条件得出想要的数量,再拿这个数量调用图片,获得图片再判断是单张还是多张,单张什么样式、多张什么样式。

共 0 条回复,还没有人回复,抢个沙发吧!

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

QQ|Archiver|小黑屋|7 talk

GMT+8, 2021-1-21 01:24 , Processed in 0.022393 second(s), 28 queries . Powered by Discuz!