掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在Discuz二次開發(fā)的插件API中就有一個(gè)特殊主題,基于這個(gè)API我們可以基于Discuz的論壇帖子開發(fā)很多有價(jià)值的插件功能,比如非常經(jīng)典的就有官方的那款積分商城插件,那個(gè)插件就用到了特殊插件。近期幫助湖南紅網(wǎng)基于論壇帖子開發(fā)在線圖文直播功能的時(shí)候也用到了特殊主題。但在開發(fā)過(guò)程中我們發(fā)現(xiàn)了一個(gè)問(wèn)題:在手機(jī)版的時(shí)候,我們回復(fù)特殊主題,發(fā)現(xiàn)在回復(fù)頁(yè)面的輸入框中已經(jīng)有了默認(rèn)的內(nèi)容,而且是主題帖的內(nèi)容加上插件的標(biāo)識(shí)。如圖所示:
經(jīng)過(guò)分析dz的源代碼,發(fā)現(xiàn)是在模板中有一個(gè)$postinfo[message],而這個(gè)變量就是默認(rèn)輸入框的數(shù)據(jù),再切換在邏輯層,發(fā)現(xiàn)這個(gè)$postinfo定義的條件就是當(dāng)主題帖是特殊主題的時(shí)候(當(dāng)然還有其他的條件)。其實(shí)我也沒搞清楚dz默認(rèn)的代碼為什么要做這樣一個(gè)處理,至少針對(duì)目前的需求我認(rèn)為這個(gè)處理是幫倒忙,那么怎么屏蔽掉這個(gè)處理??赡苁紫认氲降木褪侵苯有薷木托辛?,而實(shí)際上紅網(wǎng)的該部分文件是不可能被我們來(lái)操作的(因?yàn)檫@個(gè)文件是dz的核心文件,原則上是不讓動(dòng)的)。
那么我們只能考慮插件來(lái)解決了,我們發(fā)現(xiàn)在帖子回復(fù)頁(yè)面存在post_bottom_mobile這個(gè)hook,那么我們?cè)谥辈ゲ寮卸x一個(gè)手機(jī)版的頁(yè)面嵌入點(diǎn)即可。其中主要代碼可以是如下:
class mobileplugin_muquan_zhibo { } class mobileplugin_muquan_zhibo_forum extends mobileplugin_muquan_zhibo { function post_bottom_mobile_output(){ global $postinfo; $postinfo=''; } }
上述是什么意思呢,意思就是在該頁(yè)面程序執(zhí)行后模板輸出前執(zhí)行post_bottom_mobile_output方法,這個(gè)方法的作用就是把$postinfo重置為空,當(dāng)然銷毀也是可以的,具體的方法閱讀dz的開發(fā)文檔即可。好了之后的效果就是跟回復(fù)普通主題一樣了。
而dz默認(rèn)情況下針對(duì)特殊主題回復(fù)的這個(gè)處理是否有別的用處,暫時(shí)不得而知,如果該處理有非常重要的用途,那么就要換其他方式來(lái)解決了。
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流