天天看點

在Discuz!插件中使用DIY

Discuz!的DIY是一個非常強大的功能,可惜的是在插件模闆中并沒有提供這個功能,不過我們可以使用一些其他途徑來實作。

    Discuz!引用模闆是使用template函數生成模闆緩存,并傳回緩存的路徑。通過該函數源碼以及Discuz!源檔案來看,隻需要在模闆路徑前加入diy:既可以讓該模闆實作DIY功能。

    可惜的是,目前Discuz!并未讓插件模闆支援DIY,好在插件是可以調用系統模闆的,那麼基本思路就是,在插件的模闆放在template/default目錄中,然後使用template("diy:目錄/模闆檔案");

    首先在template/default(這個是預設模闆路徑,如果你使用了第三方模闆,也可以在對應模闆檔案夾中操作,當然推薦在default中操作,這樣即使你換了模闆,也不會有影響)中建立一個plugin目錄(也可以用别的名字),然後将有需要用DIY的模闆檔案放在這個檔案夾中,然後修改插件檔案中引用模闆的代碼,将原有代碼template("插件名:模闆名")改成template("diy:plugin/模闆名"),然後運作插件,在頁面的右上角就出現了DIY操作的按鈕了。

    當然,如果模闆中沒有對應的架構,那是無法進行DIY操作的。隻需要在需要添入DIY資料的部分加入以下代碼:

    <!--[diy=plugin]--><div id="plugin" class="area"></div><!--[/diy]-->

    這裡的plugin可以改為任意名稱,隻要保證注釋中的diy=xxxx和div中的id值相同,同時同一頁面中值唯一便可。如果一個頁面需要多個這樣的DIY框,一定要注意區分好哦,一旦值重複了會導緻頁面出錯的。

    今天在調試的時候發現一個問題,我修改了模闆以後,頁面無法更新,删除了data/template下的所有檔案,在背景清除了資料緩存和DIY緩存都無法讓頁面更新,更詭異的是,我删除了原始模闆檔案依然能夠生成緩存,而且緩存依然是原來的版本,今天糾結了挺久,後來在function_core.php中找到以下代碼:

    template函數,第509行:

    $diypath = DISCUZ_ROOT.'./data/diy/'.$_G['style']['tpldirectory'].'/'; //DIY模闆檔案目錄

    這下明了了,Discuz!還會為DIY的模闆生成一個緩存檔案,存放于“data/diy/template/模闆目錄/”中,隻需要找到這個路徑删除掉緩存檔案讓系統重新生成緩存便可。

繼續閱讀