違法網站請勿向我司工作人員發起任何形式的人工服務請求,嚴禁利用鴻茂傳媒技術支持服務與產品從事任何非法活動,如有發現不再提供任何技術支持。×

如何讓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 在線qq客服

掃碼諮詢微信客服

鴻茂傳媒企業居間
頂部