广告:即日起,凡是购买我司豪华版套餐即送(企业版小程序一套、公司关键词优化前三、乐清生活网软文置顶一篇),先到先得,错过在等一年,详情咨询在线客服或者电话联系。×

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

技术攻关 2016-11-19 鸿茂传媒 289

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

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

20161119155010.jpg

带着这样的需求就开始我们这里讨论的话题吧。其实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′

即可

【版权与免责声明】如发现内容存在版权问题,烦请提供相关信息发邮件至admin@honmau.com,我们将及时沟通与处理。本站内容除非来源注明鸿茂传媒,否则均为网友转载,涉及言论、版权与本站无关。点击进入客服处理
广告
热门推荐
鸿茂传媒旗舰店
乐清生活网微信
乐清生活网官方微信
近期,想定制开发一个网站
提交需求
Copyright © 2009-2019 honmau.com 鸿茂传媒 版权所有  浙ICP备11041680号-4 浙公网安备 33038202002006号