zblog插件開發文檔
2015-12-05 分類:web 技術 閱讀次數:2436 評論(0)插件開發文檔
1.說明
插件採用系統提供的各種接口,用來實現一些高級定制功能,讓Z-Blog變的更加強壯和有趣(Very Good,Very Strong.)。
2.目錄及命名要求
插件是放在系統的Plugin目錄下的,插件必須有自己的目錄名且不與其它插件同名。
插件目錄名即是插件的ID名稱,系統也以此做為識別。
插件必須設定正確的plugin.xml文件,系統依賴此文件對插件進行管理。
plugin.xml文件裡的”<id>“節點一定要設定為插件的ID名稱(即插件的目錄名稱),這非常重要。
更多的提示與技巧 :
1.提示注意
在公共區(例如include.asp)定義常量、變量和函數名時,一定要加上插件ID做前綴,防止衝突。
插件管理頁面在頭部要CheckPluginState(“插件ID名稱”)來檢查插件是否已啟用,插件未啟用則一定要中止執行。
一定要注意安全問題,注意檢查用戶權限,如果對遊客開放的注意檢查提交的數據,以免被注入。
系統接口中有兩個接口是禁止使用的:Action_Plugin_System_Initialize和Action_Plugin_System_Initialize_WithOutDB,在系統初始化前運行插件,有可能接管整個系統。
插件優先等級的問題,優先被啟用的插件優先等級就高,可以第一時間處理所掛接口的數據,但是在同一接口處掛接的其它插件將會排隊繼續處理數據,這一點也要注意。
插件中函數的參數要設定好是ByRef還是ByVal,(ByVal是傳遞值 源數據不會被修改,你可以把這個值當作自己的局部變量來使用;ByRef是傳遞地址,源數據可能被修改,你對這個變量的操作將對你傳入的那個變量產生影響,就像指針的感覺。 )防止出現一些莫名其妙的干擾問題。
2.相關技巧
插件機制是公開和公用的,如果某個插件本身帶有屬於自己的接口申明及調用的話,別的插件同樣可以掛接到這個插件的接口上來。
主題中所帶的插件的優先等級為0級,最高且不可調整,只要使用該主題,其中的插件就自動被啟用。
接口是可以間接掛接的,打個比方,你可以在掛接一個Action接口時加入掛接另一個Filter接口的代碼,這樣會十分的靈活。
3.plugin.xml格式規範說明
樣例文檔
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <plugin> <id>BackupDB</id> <name>BackupDB</name> <note>Z-Blog的數據庫備份及升級程序</note> <type>inline</type> <path>main.asp</path> <include>include.asp</include> <level>1</level> <author> <name>Sipo</name> <url>http://www.dc9.cn/</url> <email></email> </author> <version>1.1</version> <modified>2007-12-26</modified> </plugin>
節點說明
plugin, 表示此文檔為插件信息.
id, 插件ID, 即存放該插件的目錄名.
name, 插件名稱, 中英文均可.
note, 插件簡介.
type, 無須接口調用的插件設置為outline,其它的設為inline.
path, 插件管理頁的名稱,無管理頁的插件可刪除此節點.
include, 插件接口掛接頁面,常規約定為include.asp,無須接口調用的插件可刪除此節點.
level, 插件要求管理權限,1為管理員,2為高級用戶,3為中級用戶,4為普通用戶,5為遊客.
author, 插件作者.
name, 作者名稱.
url, 作者網址.
email, 作者電郵.
version, 插件的版本號.
modified, 最後更新日期.
4.接口分類與調用
接口共分三大類,具體請看接口分類與API。Z-Blog的API共分為三大類,分別是
行為類接口:Action Api
過濾器接口:Filter Api
純輸出接口:Response Api
針對三大類的接口,系統提供了3種接口的掛接方式,分別是:
動作接口的調用過程
Call Add_Action_Plugin("API名","要執行的代碼段")過濾器接口的調用過程
Call Add_Filter_Plugin("API名","要掛接的函數名")純輸出接口的調用過程
Call Add_Response_Plugin("API名","要輸入的字符串")5.插件的註冊
Z-Blog系統的插件是採用主動插入方式來通知系統。所以必須在include.asp文件中調用RegisterPlugin函數才能讓插件進入系統的插件體系。
'註冊插件
Call RegisterPlugin("插件ID名稱","ActivePlugin_插件ID名稱")還必須在”ActivePlugin_插件ID名稱”函數中完成對接口的掛接工作,例如:
'具體的接口掛接
Function ActivePlugin_插件ID名稱() Call Add_Action_Plugin("目標接口","具體執行代碼") End Function
6.插件的激活和禁用執行函數
系統設定每個插件可以提供兩個特殊的函數來執行激活和禁用過程中的一次性的任務。
如果你的插件有這種需求,請在include.asp裡使用這兩個函數,系統會在啟用和禁用這個插件時自動執行相應函數。
Function InstallPlugin_插件ID名稱() '代碼 End Function Function UninstallPlugin_插件ID名稱() '代碼 End Function
7.主題裡的插件
主題可包含一個插件,這個插件的ID名稱就等於主題的ID名稱。
主題裡的插件文件必須直接放置在主題目錄下的Plugin目錄裡。
主題裡的插件無plugin.xml,其信息全部記錄在了主題的配置文件theme.xml文件的plugin節點裡。
theme.xml文件裡的plugin節點的配置方法與獨立插件的plugin.xml方法完全一致。
主題裡的插件的優先級最高且不可調整,只要啟用這個主題,插件自動激活,直到切換其它主題為止。
評論
發表評論