公告

Collapse
No announcement yet.

關於 Discuz! X1 嵌入點 及其插件的編寫 注意說明

Collapse
X
Collapse
Who has read this thread:
 
  • Filter
  • Time
  • Show
全部清除
新帖子

  • 關於 Discuz! X1 嵌入點 及其插件的編寫 注意說明

    [hide]from: http://bbs.7dps.com/thread-7591-1-1.html
    轉載: http://linux0911.no-ip.info/Discuz/t...13900-1-3.html

    關於 Discuz! X1 嵌入點 及其插件的編寫 注意說明
    haierspi 發表於 2010-3-29 12:42

    經過昨晚上[2010.3.28]的通宵奮戰.. 對 DX 的插件平台略微瞭解.. 下面我講解下我所知道的..如果有什麼地方不對請幫忙指正

    插件的案例大家可以看這裡: http://bbs.7dps.com/thread-7567-1-1.html

    首先插件的路徑改變了

    插件放置於 source/plugin/目錄下

    資料庫讀取的寫法也發生了改變:

    使用了類的靜態方法好處顯而易見不需要原來 $GLOBALS[『db』] 直接在任何地點拿出來就能用

    DB::table('forum_attachment'); //這裡會返回 pre_ forum_attachment
    DB::fetch_first($query) //這裡對應原來 DZ7 的 $db-> fetch_first($query)
    DB::query($query) //對應原來 DZ7 的 $db-> query ($query)
    DB::fetch($query) //對應原來 DZ7 的 $db-> fetch_array ($query)

    關於嵌入點:

    Discuz! X1 由於有眾多模組 .. 所以插件平台在原來 DZ 7.2 的基礎上進行了升級

    具體的寫法:

    class plugin_bigqi_com {
    function plugin_bigqi_com(){
    //這個寫法會被插件執行函數 runhooks() 執行時調用執行...
    return 'this is globals plugin_bigqi_com';
    }
    function global_footer(){
    // 這個是全域嵌入點的...所有的頁面包括首頁論壇群組空間等等
    return 'this is globals global_footer';
    }
    }
    //下面這裡就重要了..
    // DISCUZ! X 的插件執行機制有些改動... 由於 Dx 使用了模組化包含方式..
    //所以就有必要強調嵌入點是哪個模組下的
    //模組的定義在每個最外層檔案的最上部如: forum.php
    // define('CURSCRIPT', 'forum'); 定義了模組名稱 forum
    //另外原來 DISCUZ 7.2 使用的執行腳本常數由原來的 CURSCRIPT 改為 CURMODULE
    //所以大家在寫 forum 嵌入點的時候判斷模組下執行的腳本就要用 CURMODULE 來判斷
    //另外嵌入點的具體寫法如下:
    //只有用'plugin_'+插件名稱+下橫線+模組的名稱對原來的類進行繼承延伸才能讓模組內的嵌入點顯示
    class plugin_bigqi_com_forum extends plugin_bigqi_com {
    function index_top(){
    return 'this is forum index_top';
    }

    }


    // 另外 原來的 DZ 7.2 使用的引用模板的寫法不變只是插件的模板目錄的名稱改變了
    由 templates 改成了 template
    例如:
    source/plugin/bigqi_com_picrollshow/template/
    插件模板引擎的寫法 保持不變 我這裡寫個示例
    // include template('bigqi_comicrollshow');
    // return $return;
    [/hide]
Working...
X