违法网站请勿向我司工作人员发起任何形式的人工服务请求,严禁利用鸿茂传媒技术支持服务与产品从事任何非法活动,如有发现不再提供任何技术支持。 ×

如何让Discuz阅读权限大于0的帖子也能用DIY调用到

使用过Discuz的朋友都知道,哪怕你只是一个技术小白也好。DZ的DIY功能能让一个完全不懂代码的站长也能进行各种调用操作,比如在站内可以直接在前台调用数据,而在站外可以直接用后台提供的API进行数据调用,比如在自己写的独立程序上调用DZ论坛的数据就可以除了重新写SQL外还可以直接通过DZ后台的API进行调用。

但问题来了。我们会发现有的帖子设置了阅读权限,比如设置了10、100、255等等,这样的帖子如果我们想DIY调用出来发现调用不到。其实这是DZ在程序设计上的考虑,他们是这样考虑的,既然你设置了权限了也就是帖子不让别人访问了,就没必要在列表里面展示了,其实这样的考虑比较完善的。但有的站长就是有这样的需求,比如设置了10的权限,我网站大多数用户还是需要看啊。

'如何让Discuz阅读权限大于0的帖子也能用DIY调用到'

带着这样的需求就开始我们这里讨论的话题吧。其实DIY调用数据,或者直接在后台进行调用,最终还是需要从数据库里边取数据。只是DZ可能从架构上采用了面向对象开发机制,把这些都封装到某些类的方法里面。比如关于阅读权限大于0就不显示在DIY调用数据的列表里面,通过微构网络发现就是在source/class/block/forum/block_thread.php中的一个名为block_thread中所约束的,这个类继承了discuz_block 这个父类。而且是写入在了getdata()这个方法里面。通过分析就在357行(X3.2版本)中有一段如下代码

$sqlfrom WHERE {$maxwhere}t.readperm=’0′

其中WHERE {$maxwhere}t.readperm=’0′就是限制条件,也就是只有阅读权限为0的帖子才会被显示出来,如果我们要把所有的都显示出来,那么还明显我们可以改成WHERE {$maxwhere}t.readperm>=’0′都可以,当然也可以是其他的方法了,比如修改其他的地方把这个where条件的一部分去掉。

到了这里我们很自然可以做进一步的优化,比如显示阅读权限为100及以下的帖子,那么我们只需要把那段代码修改为

$sqlfrom WHERE {$maxwhere}t.readperm<=’100′

即可

© 网站版权与免责声明

1、【鸿茂传媒】独立拥有本网站相关网页内所有资料的版权;

2、未经【鸿茂传媒】的明确书面许可,任何人不得对其进行复制;

3、本网站未注明【鸿茂传媒】的文章,均来源于网络,仅供大家学习与参考;

4、如有侵权/违规/不妥请联系客服QQ或邮箱删除,敬请谅解;

5、【鸿茂传媒】保留随时更正、修改、更新本声明的权利。法律申明

服务需求留言板
*紧急问题联系客服
提交
提交需求
工作日: 8:30 - 22:00  在线客服咨询

扫码咨询微信客服

鸿茂传媒企业介绍
顶部