phpcms栏目中显示discuz论坛帖子并过滤掉删除的文章

本文详细介绍了在PHPCMS与Discuz论坛系统集成开发站点时,如何通过SQL过滤条件优化显示内容,避免广告贴影响用户体验。通过使用displayorder字段筛选出正常状态的帖子,并按照发布时间倒序展示最新内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通常在phpcms与discuz论坛系统集成开发站点的时候经常会有这种需求,即将论坛中的帖子显示在phpcms首页的栏目中,参见示例网站:(http://www.myjindy.net)可查看效果。

在网上最多的教程都会讲使用下面的get标签来显示:

{pc:get  sql="SELECT * FROM pre_forum_thread  ORDER BY dateline>=UNIX_TIMESTAMP()-604800 DESC" 
    num="10" cache="3600" return="data"}
{loop $data $key $val}
<li><a title="{$r[subject]}" href="http://www.jindy.myjindy.net/bbs/forum.php?
        mod=viewthread&tid={$val[tid]}&extra=page%3D1">{$val[subject]}</a></li>
{/loop}
{/pc}

上面的标签确实可以将最新的论坛发帖取到并显示。

但是有的时候会经常遇到一些广告贴,在论坛管理中删除后还是会显示在phpcms的栏目中,点击链接进去查看会发现帖子已删除。

这样的用户体验很不好。

解决方法:

pre_forum thread 中查询帖子的时候 加入过滤条件 :

displayorder>=0
displayorder字段保存了当前帖子的几种状态如下:
3 ——3级置顶
2 ——2级置顶
1 ——1级置顶
0 ——正常
-1——回收站
-2——审核中
-3——审核忽略
-4——草稿

所以用displayorder可以过滤取出可以正常显示的帖子。

即使用如下的sql进行查询:

SELECT * FROM pre_forum_thread where displayorder>=0  ORDER BY dateline>=UNIX_TIMESTAMP()-604800 DESC
最终的get标签如下:
{pc:get  sql="SELECT * FROM pre_forum_thread where displayorder>=0 
     ORDER BY dateline>=UNIX_TIMESTAMP()-604800 DESC" num="10" cache="3600" return="data"}
{loop $data $key $val}
<li><a title="{$r[subject]}" href="http://www.jindy.myjindy.net/bbs/forum.php?
    mod=viewthread&tid={$val[tid]}&extra=page%3D1">{$val[subject]}</a></li>
{/loop}
{/pc}


--欢迎访问: http://www.3body.tk/iblog

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值