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

阅读更多

    通常在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}
  • {$val[subject]}
  • {/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}
    
  • {$val[subject]}
  • {/loop} {/pc}

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

    你可能感兴趣的:(phpcms,discuz!)