兔源码网 - 专注DZ模版分享、DZ插件分享!

 找回密码
 立即注册
PS教程

discuz 门户文章列表多图显示

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

DZ站长建站交流群:493651246

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


之前写过一个首页调用帖子多图,大家反映说希望文章列表页也可以多图显示,刚测试了下也可以,方法也比较简单。
思路,在文章列表页模板里内根据默认代码就可以获取到列表内每篇文章的aid,我们只需要根据这个aid来获取下每篇文章内图片的路径就行了。
开始操作:
1.添加数据查询语句,以默认文章列表模板template/default/portal/list.htm为例,找到
  1. <!--{loop $list['list'] $value}-->
复制代码
在其下加入
  1. <!--{eval $list_pics = DB::fetch_all("SELECT attachment FROM ".DB::table('portal_attachment')." WHERE `aid`= '$value[aid]' AND `isimage`=1");}-->
复制代码

2.loop图片,在往下找到原来调用图片代码
  1. <!--{if $value[pic]}--><div class="atc"><a href="$article_url" target="_blank"><img src="$value[pic]" alt="$value[title]" class="tn" /></a></div><!--{/if}-->
复制代码

替换成
  1. <!--{if $value[pic]}-->
  2. <!--{loop $list_pics $list_pic}-->
  3. <div class="atc"><a href="$article_url" target="_blank"><img src="data/attachment/portal/$list_pic[attachment]" alt="$value[title]" class="tn"/></a></div>
  4. <!--{/loop}-->
  5. <!--{/if}-->
复制代码

这样就可以了。
效果:
2.jpg


附加:
如果想要限制图片数量,查询语句里加个limit即可:
  1. <!--{eval $list_pics = DB::fetch_all("SELECT attachment FROM ".DB::table('portal_attachment')." WHERE `aid`= '$value[aid]' AND `isimage`=1 LIMIT 0,2");}-->
复制代码

LIMIT 0,2即调用2张图。
如果更复杂一点,比如不同数量不同样式,可参考之前的首页调用帖子多图里的方式做判断。
OK。
------------------------------------------------
上面只是简单的调用多图,下面加点东西。
发现有人拿我这垃圾代码去别的网站求助,多图不同样式怎么做。。。我想说的是,这个调用代码是我写的,直接问我不就好了?
开始:
这次图省事儿,直接拿我自己的站点改造的,样式可能不适合你,css就不贴了,我会做代码说明,认真看完自己想做什么样式随意。
在门户列表页模板里查找
  1. <!--{loop $list['list'] $value}-->
复制代码

在下面添加
  1. <!--{eval $picnums = DB::result(DB::query("SELECT count(attachid) FROM ".DB::table('portal_attachment')." WHERE `aid`= '$value[aid]' AND `isimage` = 1"));}-->
  2. <!--{if $picnums < 3}-->
  3. <!--{eval $apicnum = 1}-->
  4. <!--{elseif $picnums > 2 && $picnums < 6}-->
  5. <!--{eval $apicnum = 3}-->
  6. <!--{elseif $picnums > 6}-->
  7. <!--{eval $apicnum = 6}-->
  8. <!--{/if}-->
  9. <!--{eval $list_pics = DB::fetch_all("SELECT attachment FROM ".DB::table('portal_attachment')." WHERE `aid`= '$value[aid]' AND `isimage`=1 ORDER BY `dateline` ASC LIMIT $apicnum");}-->
复制代码

这个是查询附件数量并判断,
$picnums是文章所有图片数量。$apicnum是判断后的图片数量。
根据$picnums做数量判断,取部分图片,结果就是$apicnum。
----如果图片小于3张则取1张,如果大于2张小于6张则取3张,如果大于6张则取6张。

下面开始根据图片数量显示不同样式,我只做了两种样式,1张和多张。
  1. <!--{if $picnums && $apicnum == 1}-->
  2. <div class="post_left">
  3. <!--{loop $list_pics $list_pic}-->
  4. <a href="$article_url" target="_blank"><img src="http://file.cmsbj.cn/cmsbj_file/portal/$list_pic[attachment]" alt="$value[title]" class="tn"/></a>
  5. <!--{/loop}-->
  6. </div>
  7. <div class="post_right" <!--{if !$value[pic]}-->style="width:100%;"<!--{/if}-->>
  8. <h1 class="post_title"><a href="$article_url" target="_blank" title="$value[title]" $highlight>$value[title]<!--{if $value[pic]}--><span class="pipe"></span>({$picnums}图)<!--{/if}--></a><!--{if $value[status] == 1}-->({lang moderate_need})<!--{/if}--></h1>
  9.     <div class="post_property">
  10.         <div class="post_author"><a href="space-uid-1.html" target="_blank" title="admin">admin</a></div>
  11.         <div class="post_spliter">.</div>
  12.         <div class="post_date">$value[dateline]</div>
  13.         <div class="clear"></div>
  14.     </div>
  15.     <p class="post_brief">$value[summary]</p>
  16.     <div class="post_meta">
  17.         <div class="post_tag">
  18.             <!--{if $_G['group']['allowmanagearticle'] || ($_G['group']['allowpostarticle'] && $value['uid'] == $_G['uid'] && (empty($_G['group']['allowpostarticlemod']) || $_G['group']['allowpostarticlemod'] && $value['status'] == 1)) || $categoryperm[$value['catid']]['allowmanage']}-->
  19.             <p><span class="xg1">
  20.                 <label><a href="portal.php?mod=portalcp&ac=article&op=edit&aid=$value[aid]">{lang edit}</a></label>
  21.                 <span class="pipe">|</span>
  22.                 <label><a href="portal.php?mod=portalcp&ac=article&op=delete&aid=$value[aid]" id="article_delete_$value[aid]" onclick="showWindow(this.id, this.href, 'get', 0);">{lang delete}</a></label>
  23.             </span>
  24.         </p>
  25.         <!--{/if}-->
  26.         </div>
  27.     </div>
  28. </div>

  29. <!--{else}-->
  30. <div class="post_right" <!--{if !$value[pic] || $apicnum > 1}-->style="width:100%;"<!--{/if}-->>
  31.     <h1 class="post_title"><a href="$article_url" target="_blank" title="$value[title]" $highlight>$value[title]<!--{if $value[pic]}--><span class="pipe"></span>({$picnums}图)<!--{/if}--></a><!--{if $value[status] == 1}-->({lang moderate_need})<!--{/if}--></h1>

  32.     <div class="post_property">
  33.         <div class="post_author"><a href="space-uid-1.html" target="_blank" title="admin">admin</a></div>
  34.         <div class="post_spliter">.</div>
  35.         <div class="post_date">$value[dateline]</div>
  36.         <div class="clear"></div>
  37.     </div>
  38.     <p class="post_brief">$value[summary]</p>
  39.     <div class="post_left" style="width:auto;height:auto;float:none;margin:0;"><!--{loop $list_pics $list_pic}--><a href="$article_url" target="_blank" style="float:left;"><img src="http://file.cmsbj.cn/cmsbj_file/portal/$list_pic[attachment]" alt="$value[title]" class="tn" width="250px;"/></a><!--{/loop}--></div>
  40.     <div class="post_meta">
  41.         <div class="post_tag">
  42.             <!--{if $_G['group']['allowmanagearticle'] || ($_G['group']['allowpostarticle'] && $value['uid'] == $_G['uid'] && (empty($_G['group']['allowpostarticlemod']) || $_G['group']['allowpostarticlemod'] && $value['status'] == 1)) || $categoryperm[$value['catid']]['allowmanage']}-->
  43.             <p><span class="xg1">
  44.                 <label><a href="portal.php?mod=portalcp&ac=article&op=edit&aid=$value[aid]">{lang edit}</a></label>
  45.                 <span class="pipe">|</span>
  46.                 <label><a href="portal.php?mod=portalcp&ac=article&op=delete&aid=$value[aid]" id="article_delete_$value[aid]" onclick="showWindow(this.id, this.href, 'get', 0);">{lang delete}</a></label>
  47.             </span>
  48.         </p>
  49.         <!--{/if}-->
  50.         </div>
  51.     </div>
  52. </div>
  53. <!--{/if}-->
复制代码

根据判断后图片数量$apicnum来显示不同的样式布局,如:
{if $apicnum == 数量}loop图片、文章标题、摘要……{/if}
我的就1和多的区别,分div先后来区分图片的位置:
{if $apicnum == 1}
loop图片、文章标题、摘要
{else}
文章标题、摘要、loop图片
{/if}

注意下,我的图片附件地址是远程附件file.cmsbj.cn/cmsbj_file/portal/$list_pic[attachment],本地附件的换成data/attachment/portal/$list_pic[attachment]


相关阅读:
discuz 门户首页调用帖子列表带分页+多图显示(之一)
discuz 门户首页调用帖子列表带分页+多图显示(之二)

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




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

本版积分规则

兔源码网 ( 赣ICP备17001544号 公网安备36112102000036号 )

兔源码 QQ交流群:493651246  GMT+8, 2018-12-12 04:35
←站长统计工具 查看密码:tuyuanma

兔源码DZ模板下载 站长邮箱:tuyuanma@qq.com 站长QQ:3197813386 网站地图

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

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