本欄目下相關鏈接 | ||
插件設計 | ||
您在開始論壇插件的設計之前,有必要瞭解一下我們所推薦的插件設計方式,更好的規範性和兼容性,將使得您設計的插件受到更多使用者的歡迎,對於程序員而言,也有助於形成良好的編碼習慣,實現自身能力的提升。如果您有意編寫 Discuz! 論壇插件,請按照先後順序仔細閱讀本文檔。
| ||
準備工作 | ||
插件實現流程
開始編寫論壇插件,您應當首先對插件實現的流程有一個大致的瞭解,以下是我們推薦的插件編寫流程: 文件命名規範
Discuz! 按照如下的規範對程序和模板進行命名,請在設計插件時盡量遵循此命名規範: common.inc.php 模塊功能白皮書
./include/common.inc.php 是 Discuz! 的通用初始化模塊程序,其幾乎被所有的外部代碼所引用,在您開始插件設計之前,可以先對改模塊的大致功能做一定的瞭解。common.inc.php 主要完成了以下任務: | ||
插件接口概述 | ||
使用管理員賬號登錄 Discuz! 系統設置,在左側菜單將可以看到「插件設置」和「插件管理」兩個選項,使用超級版主或版主賬號登錄,將只出現「插件設置」一個選項。「插件管理」是控制插件打開與否、設計插件模塊、菜單、參數和使用權限的地方,插件開發者可以依照設計意圖,在此進行插件的初步設置,這裡同時也提供插件導入和插件開關的功能,用於導入他人設計的插件和對插件的可用狀態進行變更;「插件設置」是對已經安裝的插件進行設置的地方,供使用者對插件參數進行調整以實現不同的插件功能。即前者主要面向開發者,後者主要面向使用者。 開始編寫一個新插件,請首先在插件管理中,輸入新插件的名稱和惟一標識符。名稱用於表明此插件的用途,例如設置為「虛擬銀行插件」;惟一標識符用於在後續的插件模塊中調用本插件,不可與現有插件重複,命名規則限制與 PHP 變量命名相同,雖然初次設置後仍可改動,但強烈建議一次性將此配置設置好,否則可能涉及到很多代碼方面的變更,增加編碼的麻煩。請注意:惟一標識符請不要設置的過短,或使用有可能與其他插件重複的命名,例如製作此插件的公司叫做 Comsenz Technology Ltd.,插件名稱是「虛擬銀行插件」,惟一標識符可設置為「comsenz_virtual_bank」,後面將以「虛擬銀行插件」和「comsenz_virtual_bank」為例進行說明。 在插件管理中添加插件後,僅僅是增加了一條插件記錄,後面還需要很多相關的設計和設置。在列表中選擇插件的「詳情」進入插件的詳細設置。插件設置分為三個部分:
| ||
參數讀取與緩存控制 | ||
編寫插件程序時,可能需要讀取一些插件的信息,如果插件需要使用者進行配置,還需要讀取使用者設置的參數值。Discuz! 允許插件程序使用數據庫讀取和緩存讀取這兩種方法獲取插件信息和參數。Discuz! 的插件接口已經對插件信息進行了合理的緩存,使用緩存讀取的方式,將比數據庫讀取速度更快,消耗的資源更是幾乎可以忽略不計。緩存讀取唯一的局限是需要插件使用插件接口提供的通用後台管理程序。如果使用自定義後台模塊的方式,需要後台模塊將參數存放到 pluginvars 數據表中,才能被系統正常緩存。我們強烈推薦您通過緩存讀取插件信息和配置數據。 插件數據結構 插件數據使用兩個數據表存放,分別是 plugins 和 pluginvars。前者用於存放插件信息:安裝了多少個插件,就有多少條記錄;後者用於存放插件的配置參數和配置值:所有已安裝的插件總共有多少個配置項目,就有多少條記錄。下面的表格列出了這兩個表的主要字段及其用途說明。 plugins 表:
pluginvars 表:
如果您使用自行編寫的插件後台管理模塊進行插件參數配置,請盡量將配置項目按照 pluginid 的對應關係,將參數存儲於 pluginvars 表中,這樣系統就可以自動將您增加的配置參數緩存起來,以供插件程序進行調用。 插件參數讀取 瞭解了 Discuz! 插件存儲的數據結構後,您可以在插件程序中根據需要選擇合適的數據讀取方式。由於數據庫讀取方式可以由數據結構推斷而來,因此這裡只介紹緩存讀取的方式,這種方式是我們強烈推薦的插件數據讀取方式。 在管理者配置好插件信息,或用戶進行插件的參數設置之後,系統將根據插件設置的惟一標識符,自動生成一個插件數據的緩存文件,例如惟一標識符為 comsenz_virtual_bank,則緩存文件位於 ./forumdata/cache/plugin_comsenz_virtual_bank.php,您可以打開此文件查看其中的數據內容和格式。緩存採用數組的方式進行存儲,引用此文件即可將所需的插件參數一次性賦值。 其中,$_DPLUGIN['comsenz_virtual_bank'] 這個數組下標,為插件的惟一標識符,所有插件緩存數據,一經被引用,就會賦值到 $_DPLUGIN 這個多維數組中;modules 描述了這個插件的模塊信息,其中 type 為 1~4 的整數值,從小到大依次為「直接鏈接(前台菜單)」、「前台調用(前台菜單)」、「後台調用(後台菜單)」、「包含運行(無菜單)」;vars 描述了這個插件的配置變量,前面為變量名,後面為使用者賦予這個變量的值。 | ||
編寫插件的原則與注意事項 | ||
請在您動手編寫插件之前,還需要仔細的閱讀以下原則,遵循這些原則,將有效的避免可能發生的問題:
| ||
意見反饋 | ||
插件接口是 Discuz! 開發組為了方便插件設計、安裝和使用而專門開發,雖然經過長期的優化和改進,可能仍然會有不夠合理或不夠完善的地方,歡迎各位插件程序員在使用此接口的過程中,為我們提出意見和建議,感謝您的支持。 |