如何实现SS中首页调用论坛图片,每主题只调用一张图片

源码技巧15年前 (2010-08-18)14100
[table]
[tr][td]目前,默认的会调用同一主题下的多张[b][color=#ff0000]图片[/color][/b],而出现标题重复的情况,对网站的体验不好。
实际通过模块管理可以实现,只调用同一主题的一张[b][color=#ff0000]图片[/color][/b]。
登录后台
创建模块-》[b][color=#ff0000]论坛[/color][/b]附件-》高级模式 [list=1]
[*]SELECT t . * , a . *
[*]FROM discuz.cdb_threads t
[*]INNER JOIN discuz.cdb_attachments a ON t.tid = a.tid
[*]AND t.authorid = a.uid
[*]WHERE a.isimage=1
[*]GROUP BY t.tid
[*]ORDER BY t.views DESC
[/list]
[i]复制代码[/i]
其它选项按自己的需求填写。

提交保存。

将得到的代码复制到调用的部分

比如我这里是 [list=1]
[*]
[/list]
[i]复制代码[/i]
不要奇怪,上面不是什么乱码,是生成的调用代码。

对上面几处特别说明的地方:
1,t.authorid = a.uid 这里主要判断了这个主题与附件是不是为同一作者,不要这一处,会出现,lz发表的帖子没有[b][color=#ff0000]图片[/color][/b],如果回贴者发了[b][color=#ff0000]图片[/color][/b],也会调用出来。
2,GROUP BY t.tid 利用tid的唯一性和 group by的分组查询就得到了只检索出一行包含图版主题的帖子。


有朋友需要用到[b][color=red]时间限制[/color][/b]和[color=red][b]指定版块[/b][/color]的:

完善了调用代码: [list=1]
[*]SELECT t. * , a. *
[*]FROM yv_bbs.cdb_threads t
[*]INNER JOIN yv_bbs.cdb_attachments a ON t.tid = a.tid
[*]AND t.authorid = a.uid
[*]WHERE t.log_CateID
[*]IN ( 11, 13 )
[*]AND a.isimage =1
[*]AND t.log_PostTime >= UNIX_TIMESTAMP( ) -604800
[*]GROUP BY t.tid
[*]ORDER BY t.views DESC
[*]LIMIT 0 , 30
[/list]
[i]复制代码[/i]
[b][size=5]使用说明:[/size][/b][color=red][b][color=blue]yv_bbs [/color]要改成你自己的数据库名,(用了代码没有效果的应该是没有修改这儿)
[color=blue]UNIX_TIMESTAMP( ) -604800[/color] 是对七天内的帖子的调用。7×24×60×60得来,举一反三、天、月的调用很容易实现了。
[color=blue]t.log_CateID IN ( 11, 13 )[/color] 这里就是指定版块了。括号里是版块ID,注意是英文的逗号符,作为间隔的[/b][/color] [/td][/tr]
[/table]

“如何实现SS中首页调用论坛图片,每主题只调用一张图片” 的相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。