国产又猛又爽又黄视频|在线观看人成视频免费|少妇高潮太爽了在线视频|911国产免费无码专区|特黄做受又大又粗又长大片|欧美一级二级免费在线观看|日日夜人人澡人人澡人人看免|欧洲午夜精品一级毛片在线播放

讓Discuz閱讀權(quán)限大于0的帖子也能用DIY調(diào)用到

2014-10-23 15:28 欄目:技術(shù)開發(fā) 查看(28367)

使用過Discuz的朋友都知道,哪怕你只是一個(gè)技術(shù)小白也好。DZ的DIY功能能讓一個(gè)完全不懂代碼的站長也能進(jìn)行各種調(diào)用操作,比如在站內(nèi)可以直接在前臺(tái)調(diào)用數(shù)據(jù),而在站外可以直接用后臺(tái)提供的API進(jìn)行數(shù)據(jù)調(diào)用,比如在自己寫的獨(dú)立程序上調(diào)用DZ論壇的數(shù)據(jù)就可以除了重新寫SQL外還可以直接通過DZ后臺(tái)的API進(jìn)行調(diào)用。

但問題來了。我們會(huì)發(fā)現(xiàn)有的帖子設(shè)置了閱讀權(quán)限,比如設(shè)置了10、100、255等等,這樣的帖子如果我們想DIY調(diào)用出來發(fā)現(xiàn)調(diào)用不到。其實(shí)這是DZ在程序設(shè)計(jì)上的考慮,他們是這樣考慮的,既然你設(shè)置了權(quán)限了也就是帖子不讓別人訪問了,就沒必要在列表里面展示了,其實(shí)這樣的考慮比較完善的。但有的站長就是有這樣的需求,比如設(shè)置了10的權(quán)限,我網(wǎng)站大多數(shù)用戶還是需要看啊。

帶著這樣的需求就開始我們這里討論的話題吧。其實(shí)DIY調(diào)用數(shù)據(jù),或者直接在后臺(tái)進(jìn)行調(diào)用,最終還是需要從數(shù)據(jù)庫里邊取數(shù)據(jù)。只是DZ可能從架構(gòu)上采用了面向?qū)ο箝_發(fā)機(jī)制,把這些都封裝到某些類的方法里面。比如關(guān)于閱讀權(quán)限大于0就不顯示在DIY調(diào)用數(shù)據(jù)的列表里面,通過微構(gòu)網(wǎng)絡(luò)發(fā)現(xiàn)就是在source/class/block/forum/block_thread.php中的一個(gè)名為block_thread中所約束的,這個(gè)類繼承了discuz_block 這個(gè)父類。而且是寫入在了getdata()這個(gè)方法里面。通過分析就在357行(X3.2版本)中有一段如下代碼

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

其中WHERE {$maxwhere}t.readperm=’0′就是限制條件,也就是只有閱讀權(quán)限為0的帖子才會(huì)被顯示出來,如果我們要把所有的都顯示出來,那么還明顯我們可以改成WHERE {$maxwhere}t.readperm>=’0′都可以,當(dāng)然也可以是其他的方法了,比如修改其他的地方把這個(gè)where條件的一部分去掉。

到了這里我們很自然可以做進(jìn)一步的優(yōu)化,比如顯示閱讀權(quán)限為100及以下的帖子,那么我們只需要把那段代碼修改為

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

即可

 

與我們的項(xiàng)目經(jīng)理聯(lián)系
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請(qǐng)注明出處:讓Discuz閱讀權(quán)限大于0的帖子也能用DIY調(diào)用到 - 微構(gòu)網(wǎng)絡(luò)
分享: