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

2014-10-23 15:28 栏目:技术开发 查看(21426)

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

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

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

即可

 

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:让Discuz阅读权限大于0的帖子也能用DIY调用到 - 微构网络
分享:
  • 中央直属机关工委主要职责 2019-05-22
  • 打造“互联网+”,共享经济改变百姓生活 2019-04-22
  • 破财免灾!C罗愿向西班牙税务部门缴纳1880万欧元 2019-04-19
  • 中国品牌SUV新标杆 人民网试驾WEY VV7VV5 2019-04-19
  • 杨爱国:借助小博会促进尚志社会经济加快发展 2019-04-15
  • 泪目!川农院士逝世5年,夫人每日都去看他的雕像…思念如马,不停蹄! 2019-04-15
  • 海信世界杯首秀出奇招 竟打出俄文广告 2019-03-25
  • 财政部:对原产于美国的500亿美元进口商品加征关税 2019-03-11
  • 我和《人民日报》(我与人民日报·纪念人民日报创刊70周年) 2019-03-11
  • 杭州再增100个海绵城市项目 2018-11-08
  • 新华网申领新闻记者证资格审核公示 2018-11-08
  • 438| 93| 402| 962| 581| 653| 898| 364| 164| 412|