系統(tǒng)文件說(shuō)明c_system_plugin.php插件接口相關(guān)

說(shuō)明:接口模式復(fù)制自Z-Blog ASP版。

定義常量

PLUGIN_EXITSIGNAL_NONE '' 插件運(yùn)行中斷方式:無(wú)

PLUGIN_EXITSIGNAL_RETURN 'return' 插件中斷方式:return

PLUGIN_EXITSIGNAL_BREAK 'break' 插件中斷方式:break

定義公共變量

$GLOBALS['plugins'] = array(); 總插件激活函數(shù)數(shù)組列表

$GLOBALS['hooks'] = array(); 總插件接口列表 P.S. 1.5版啟用,逐漸過(guò)度到hooks

函數(shù)說(shuō)明

1.注冊(cè)插件函數(shù),由插件主動(dòng)調(diào)用。

參數(shù)1:插件ID

插件2:插件激活時(shí)執(zhí)行的函數(shù)名

返回:沒(méi)有

RegisterPlugin($strPluginName, $strPluginActiveFunction)

$GLOBALS['plugins'][$strPluginName] = $strPluginActiveFunction;

如上代碼,這個(gè)函數(shù)實(shí)際就是將相關(guān)值寫(xiě)入公共數(shù)組。

2.安裝插件函數(shù),這個(gè)函數(shù)只會(huì)在安裝插件時(shí)運(yùn)行一次。

參數(shù):插件ID

返回:沒(méi)有

InstallPlugin($strPluginName)

if(function_exists($f = 'InstallPlugin_' . $strPluginName)){

$f();

}

如果對(duì)應(yīng)的函數(shù)存在,執(zhí)行之。

3.插件刪除函數(shù),這個(gè)函數(shù)只會(huì)在刪除插件時(shí)運(yùn)行一次。

參數(shù):插件ID

返回:沒(méi)有

UninstallPlugin($strPluginName)

if(function_exists($f = 'UninstallPlugin_' . $strPluginName) == true){

$f();

}

為什么這里要用true?

3.創(chuàng)建插件接口函數(shù) DefinePluginFilter($strPluginFilter)

判斷如果 $GLOBALS['hooks'][$strPluginFilter] 的值是否定義。如果沒(méi)有,則定義對(duì)應(yīng)空數(shù)組,且將該變量地址引用給 $GLOBALS[$strPluginFilter] 對(duì)應(yīng)公共變量。此時(shí)即可直接使用對(duì)應(yīng)插件相關(guān)數(shù)據(jù)。

4.檢查插件接口函數(shù) ExistsPluginFilter($strPluginFilter)

這個(gè)函數(shù)判斷 $GLOBALS['hooks'][$strPluginFilter] 的值是否存在,返回 bool。

5.調(diào)用插件接口函數(shù) &UsingPluginFilter($strPluginFilter)

這個(gè)函數(shù)判斷 $GLOBALS['hooks'][$strPluginFilter] 的值是否存在,如果存在就返回對(duì)應(yīng)的插件名字的數(shù)組,否則返回空數(shù)組。

&符號(hào)用于函數(shù)的引用操作,例如:$result = &UsingPluginFilter(); 則 $result 變量即指向函數(shù)的return的地址。修改變量可修改return對(duì)應(yīng)結(jié)果。

6.移除插件接口 RemovePluginFilter($strPluginFilter)

函數(shù)判斷對(duì)應(yīng)的 $GLOBALS['hooks'][$strPluginFilter] 是否存在,如果存在,則

unset $GLOBALS['hooks'][$strPluginFilter] 和 $GLOBALS[$strPluginFilter],返回true。

以上是插件相關(guān)基本函數(shù),下面即是過(guò)濾接口相關(guān)函數(shù)。也是本頁(yè)大部分內(nèi)容。

1.掛上Filter接口 Add_Filter_Plugin($plugname, $functionname, $exitsignal = PLUGIN_EXITSIGNAL_NONE)

參數(shù)1:插件名(ID)

插件2:要掛載的函數(shù)

參數(shù)3:插件中斷方式,默認(rèn)空??梢允强?return,break。continue這個(gè)沒(méi)有?

返回:無(wú)

如果 isset($GLOBALS['hooks'][$plugname]) 插件名數(shù)組定義 且

isset($GLOBALS['hooks'][$plugname][$functionname]) 對(duì)應(yīng)下的函數(shù)名沒(méi)有定義

則 $GLOBALS['hooks'][$plugname][$functionname] = $exitsignal; 定義對(duì)應(yīng)函數(shù)名,以及其中斷方式。用法:

執(zhí)行插件即 $Filter_Plugin_Zbp_LoadManage[$functionname](); 中斷方式即 $Filter_Plugin_Zbp_LoadManage[$functionname] 的值,這是一個(gè)插件的函數(shù)執(zhí)行,官方系統(tǒng)使用 foreach 將多個(gè)函數(shù)通過(guò) $GLOBALS['hooks']['Filter_Plugin_Zbp_LoadManage'] 來(lái)執(zhí)行。

2.以下使用函數(shù)定義插件過(guò)濾接口,只是定義。接口的相關(guān)位置在其他文章詳細(xì)解答。 $GLOBALS['hooks'][$strPluginFilter] = array()

一個(gè)空的數(shù)組。

調(diào)試關(guān)閉處理程序,調(diào)試異常處理程序,調(diào)試錯(cuò)誤處理程序

DefinePluginFilter('Filter_Plugin_Debug_Handler');

ZBlogException異常調(diào)試類Display函數(shù)處

DefinePluginFilter('Filter_Plugin_Debug_Display');

監(jiān)控autoload魔術(shù)方法

DefinePluginFilter('Filter_Plugin_Autoload');

監(jiān)控記錄函數(shù)

DefinePluginFilter('Filter_Plugin_Logs');

DbSql類的SQL過(guò)濾和統(tǒng)計(jì)方法接口

DefinePluginFilter('Filter_Plugin_DbSql_Filter');

Zbp類的魔術(shù)方法接口

DefinePluginFilter('Filter_Plugin_Zbp_Call');

DefinePluginFilter('Filter_Plugin_Zbp_Get');

DefinePluginFilter('Filter_Plugin_Zbp_Set');

Zbp類的檢查權(quán)限接口(檢查當(dāng)前用戶)

DefinePluginFilter('Filter_Plugin_Zbp_CheckRights');

Zbp類的顯示錯(cuò)誤接口

DefinePluginFilter('Filter_Plugin_Zbp_ShowError');

Zbp類的顯示驗(yàn)證碼接口,具有唯一性

DefinePluginFilter('Filter_Plugin_Zbp_ShowValidCode');

Zbp類的比對(duì)驗(yàn)證碼接口,具有唯一性

DefinePluginFilter('Filter_Plugin_Zbp_CheckValidCode');

Zbp類的重新編譯模板接口

DefinePluginFilter('Filter_Plugin_Zbp_BuildTemplate');

Zbp類的生成模板標(biāo)簽接口

DefinePluginFilter('Filter_Plugin_Zbp_MakeTemplatetags');

Zbp類的生成模塊內(nèi)容的接口

DefinePluginFilter('Filter_Plugin_Zbp_BuildModule');

Zbp類的加載接口

DefinePluginFilter('Filter_Plugin_Zbp_Load');

Zbp類的加載(預(yù)處理)接口

DefinePluginFilter('Filter_Plugin_Zbp_Load_Pre');

Zbp類的后臺(tái)管理初始加載接口

DefinePluginFilter('Filter_Plugin_Zbp_LoadManage');

Zbp類的終結(jié)接口(終結(jié)接口?)

DefinePluginFilter('Filter_Plugin_Zbp_Terminate');

前臺(tái)view,index相關(guān)

定義index.php接口 起動(dòng)

DefinePluginFilter('Filter_Plugin_Index_Begin');

定義index.php接口 結(jié)束

DefinePluginFilter('Filter_Plugin_Index_End');

c_html_js_add.php腳本調(diào)用,JS頁(yè)接口需要強(qiáng)制開(kāi)啟

DefinePluginFilter('Filter_Plugin_Html_Js_Add');

搜索頁(yè)接口,可以接管搜索頁(yè)。

DefinePluginFilter('Filter_Plugin_Search_Begin');

搜索接口 結(jié)束

DefinePluginFilter('Filter_Plugin_Search_End');

Feed頁(yè)接口,可以接管Feed頁(yè)。

DefinePluginFilter('Filter_Plugin_Feed_Begin');

Feed頁(yè)接口 結(jié)束

DefinePluginFilter('Filter_Plugin_Feed_End');

CMD里的接口

cmd.php的啟動(dòng)接口,可以在這里攔截各種action

DefinePluginFilter('Filter_Plugin_Cmd_Begin');

cmd.php的Ajax命令專用接口,插件需要自行判斷權(quán)限

DefinePluginFilter('Filter_Plugin_Cmd_Ajax');

后臺(tái)里的接口

定義Login.php首頁(yè)header接口

DefinePluginFilter('Filter_Plugin_Login_Header');

定義其它頁(yè)的header接口

DefinePluginFilter('Filter_Plugin_Other_Header');

c_system_misc里的接口

c_system_misc.php的啟動(dòng)接口,可以在這里攔截各種type

DefinePluginFilter('Filter_Plugin_Misc_Begin');

后臺(tái)管理頁(yè)的啟動(dòng)接口,可以攔截后臺(tái)管理請(qǐng)求實(shí)現(xiàn)自己的管理

DefinePluginFilter('Filter_Plugin_Admin_Begin');

后臺(tái)管理頁(yè)的終結(jié)接口

DefinePluginFilter('Filter_Plugin_Admin_End');

定義后臺(tái)首頁(yè)header接口

DefinePluginFilter('Filter_Plugin_Admin_Header');

定義后臺(tái)首頁(yè)footer接口

DefinePluginFilter('Filter_Plugin_Admin_Footer');

定義后臺(tái)左側(cè)欄接口

DefinePluginFilter('Filter_Plugin_Admin_LeftMenu');

定義后臺(tái)頂部導(dǎo)航欄接口

DefinePluginFilter('Filter_Plugin_Admin_TopMenu');

后臺(tái)首頁(yè)SubMenu

DefinePluginFilter('Filter_Plugin_Admin_SiteInfo_SubMenu');

文章管理SubMenu

DefinePluginFilter('Filter_Plugin_Admin_ArticleMng_SubMenu');

頁(yè)面管理

DefinePluginFilter('Filter_Plugin_Admin_PageMng_SubMenu');

分類管理

DefinePluginFilter('Filter_Plugin_Admin_CategoryMng_SubMenu');

評(píng)論管理

DefinePluginFilter('Filter_Plugin_Admin_CommentMng_SubMenu');

用戶管理

DefinePluginFilter('Filter_Plugin_Admin_MemberMng_SubMenu');

?

DefinePluginFilter('Filter_Plugin_Admin_UploadMng_SubMenu');

標(biāo)簽管理

DefinePluginFilter('Filter_Plugin_Admin_TagMng_SubMenu');

插件管理

DefinePluginFilter('Filter_Plugin_Admin_PluginMng_SubMenu');

主題管理

DefinePluginFilter('Filter_Plugin_Admin_ThemeMng_SubMenu');

模塊管理

DefinePluginFilter('Filter_Plugin_Admin_ModuleMng_SubMenu');

設(shè)置管理

DefinePluginFilter('Filter_Plugin_Admin_SettingMng_SubMenu');

編輯頁(yè)菜單(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Edit_SubMenu');

標(biāo)簽編輯頁(yè)菜單(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Tag_Edit_SubMenu');

模塊編輯頁(yè)菜單(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Module_Edit_SubMenu');

用戶編輯頁(yè)菜單(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Member_Edit_SubMenu');

分類編輯頁(yè)菜單(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Category_Edit_SubMenu');

文章管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_ArticleMng_Table');

頁(yè)面管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_PageMng_Table');

分類管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_CategoryMng_Table');

評(píng)論管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_CommentMng_Table');

會(huì)員管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_MemberMng_Table');

附件管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_UploadMng_Table');

Tag管理頁(yè)表處理(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Admin_TagMng_Table');

文章頁(yè)面編輯頁(yè)開(kāi)始接口

DefinePluginFilter('Filter_Plugin_Edit_Begin');

文章頁(yè)面編輯頁(yè)結(jié)束接口

DefinePluginFilter('Filter_Plugin_Edit_End');

文章頁(yè)面編輯1號(hào)輸出接口

DefinePluginFilter('Filter_Plugin_Edit_Response');

文章頁(yè)面編輯2號(hào)輸出接口

DefinePluginFilter('Filter_Plugin_Edit_Response2');

文章頁(yè)面編輯4號(hào)輸出接口

DefinePluginFilter('Filter_Plugin_Edit_Response4');

文章頁(yè)面編輯5號(hào)輸出接口

DefinePluginFilter('Filter_Plugin_Edit_Response5');

文章頁(yè)面編輯3號(hào)輸出接口

DefinePluginFilter('Filter_Plugin_Edit_Response3');

分類編輯頁(yè)輸出接口

DefinePluginFilter('Filter_Plugin_Category_Edit_Response');

標(biāo)簽編輯頁(yè)輸出接口

DefinePluginFilter('Filter_Plugin_Tag_Edit_Response');

會(huì)員編輯頁(yè)輸出接口

DefinePluginFilter('Filter_Plugin_Member_Edit_Response');

模塊編輯頁(yè)輸出接口

DefinePluginFilter('Filter_Plugin_Module_Edit_Response');

c_admin_js_add.php腳本頁(yè)的接口

DefinePluginFilter('Filter_Plugin_Admin_Js_Add');

定義OutputOptionItemsOfCategories 類別的輸出選項(xiàng)函數(shù)里的接口

DefinePluginFilter('Filter_Plugin_OutputOptionItemsOfCategories');

Event里的接口

VerifyLogin成功的接口

DefinePluginFilter('Filter_Plugin_VerifyLogin_Succeed');

Logout成功的接口

DefinePluginFilter('Filter_Plugin_Logout_Succeed');

定義GetPost輸出結(jié)果接口

DefinePluginFilter('Filter_Plugin_GetPost_Result');

定義GetList輸出結(jié)果接口

DefinePluginFilter('Filter_Plugin_GetList_Result');

定義ViewIndex輸出接口Begin

DefinePluginFilter('Filter_Plugin_ViewIndex_Begin');

定義ViewFeed輸出接口Begin

DefinePluginFilter('Filter_Plugin_ViewFeed_Begin');

定義ViewSearch輸出接口Begin

DefinePluginFilter('Filter_Plugin_ViewSearch_Begin');

定義ViewAuto輸出接口Begin

DefinePluginFilter('Filter_Plugin_ViewAuto_Begin');

定義ViewAuto輸出接口End

DefinePluginFilter('Filter_Plugin_ViewAuto_End');

定義列表輸出接口

DefinePluginFilter('Filter_Plugin_ViewList_Begin');

定義列表核心接口

DefinePluginFilter('Filter_Plugin_ViewList_Core');

定義搜索核心接口

DefinePluginFilter('Filter_Plugin_ViewSearch_Core');

定義Feed核心接口

DefinePluginFilter('Filter_Plugin_ViewFeed_Core');

定義列表輸出接口

DefinePluginFilter('Filter_Plugin_ViewPost_Begin');

DefinePluginFilter('Filter_Plugin_ViewList_Template');

?

DefinePluginFilter('Filter_Plugin_ViewPost_Template');

DefinePluginFilter('Filter_Plugin_ViewComments_Template');

?

DefinePluginFilter('Filter_Plugin_ViewComment_Template');

模塊編輯的核心接口

DefinePluginFilter('Filter_Plugin_PostModule_Core');

會(huì)員編輯的核心接口

DefinePluginFilter('Filter_Plugin_PostMember_Core');

標(biāo)簽編輯的核心接口

DefinePluginFilter('Filter_Plugin_PostTag_Core');

分類編輯的核心接口

DefinePluginFilter('Filter_Plugin_PostCategory_Core');

評(píng)論發(fā)表的核心接口

DefinePluginFilter('Filter_Plugin_PostComment_Core');

文章編輯的核心接口

DefinePluginFilter('Filter_Plugin_PostArticle_Core');

頁(yè)面編輯的核心接口

DefinePluginFilter('Filter_Plugin_PostPage_Core');

會(huì)員編輯成功的接口

DefinePluginFilter('Filter_Plugin_PostMember_Succeed');

標(biāo)簽編輯成功的接口

DefinePluginFilter('Filter_Plugin_PostTag_Succeed');

分類編輯成功的接口

DefinePluginFilter('Filter_Plugin_PostCategory_Succeed');

評(píng)論發(fā)表成功的接口

DefinePluginFilter('Filter_Plugin_PostComment_Succeed');

頁(yè)面編輯成功的接口

DefinePluginFilter('Filter_Plugin_PostPage_Succeed');

文章編輯成功的接口

DefinePluginFilter('Filter_Plugin_PostArticle_Succeed');

模塊編輯成功的接口

DefinePluginFilter('Filter_Plugin_PostModule_Succeed');

會(huì)員刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelMember_Succeed');

標(biāo)簽刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelTag_Succeed');

分類刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelCategory_Succeed');

評(píng)論刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelComment_Succeed');

頁(yè)面刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelPage_Succeed');

文章刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelArticle_Succeed');

模塊刪除成功的接口

DefinePluginFilter('Filter_Plugin_DelModule_Succeed');

類里的接口

干預(yù)Base類data屬性的接口

DefinePluginFilter('Filter_Plugin_Base_Data_Load');

干預(yù)Post類Url方法的接口

DefinePluginFilter('Filter_Plugin_Post_Url');

干預(yù)Category類Url方法的接口

DefinePluginFilter('Filter_Plugin_Category_Url');

干預(yù)Tag類Url方法的接口

DefinePluginFilter('Filter_Plugin_Tag_Url');

干預(yù)Member類Url方法的接口

DefinePluginFilter('Filter_Plugin_Member_Url');

Post類的CommentPostUrl接口

DefinePluginFilter('Filter_Plugin_Post_CommentPostUrl');

Post類的Prev接口

DefinePluginFilter('Filter_Plugin_Post_Prev');

Post類的Next接口

DefinePluginFilter('Filter_Plugin_Post_Next');

Post類的RelatedList 接口

DefinePluginFilter('Filter_Plugin_Post_RelatedList');

Post類的魔術(shù)方法接口

DefinePluginFilter('Filter_Plugin_Post_Call');

Comment類的魔術(shù)方法接口

DefinePluginFilter('Filter_Plugin_Comment_Call');

Tag類的魔術(shù)方法接口

DefinePluginFilter('Filter_Plugin_Tag_Call');

Category類的魔術(shù)方法接口

DefinePluginFilter('Filter_Plugin_Category_Call');

Member類的魔術(shù)方法接口

DefinePluginFilter('Filter_Plugin_Member_Call');

Post類的Del方法接口

DefinePluginFilter('Filter_Plugin_Post_Del');

Tag類的Del方法接口

DefinePluginFilter('Filter_Plugin_Tag_Del');

Comment類的Del方法接口

DefinePluginFilter('Filter_Plugin_Comment_Del');

Category類的Del方法接口

DefinePluginFilter('Filter_Plugin_Category_Del');

Member類的Del方法接口

DefinePluginFilter('Filter_Plugin_Member_Del');

Module類的Del方法接口

DefinePluginFilter('Filter_Plugin_Module_Del');

Post類的Save方法接口

DefinePluginFilter('Filter_Plugin_Post_Save');

Comment類的Save方法接口

DefinePluginFilter('Filter_Plugin_Comment_Save');

Tag類的Save方法接口

DefinePluginFilter('Filter_Plugin_Tag_Save');

Category類的Save方法接口

DefinePluginFilter('Filter_Plugin_Category_Save');

Member類的Save方法接口

DefinePluginFilter('Filter_Plugin_Member_Save');

Module類的Save方法接口

DefinePluginFilter('Filter_Plugin_Module_Save');

Mebmer類的Avatar接口

DefinePluginFilter('Filter_Plugin_Mebmer_Avatar');

Upload類的SaveFile方法接口

DefinePluginFilter('Filter_Plugin_Upload_SaveFile');

Upload類的SaveBase64File方法接口

DefinePluginFilter('Filter_Plugin_Upload_SaveBase64File');

Upload類的DelFile方法接口

DefinePluginFilter('Filter_Plugin_Upload_DelFile');

Upload類的Url方法接口

DefinePluginFilter('Filter_Plugin_Upload_Url');

Upload類的Dir方法接口

DefinePluginFilter('Filter_Plugin_Upload_Dir');

App類的Pack方法接口

DefinePluginFilter('Filter_Plugin_App_Pack');

Template類編譯一個(gè)模板前的接口

DefinePluginFilter('Filter_Plugin_Template_Compiling_Begin');

Template類編譯一個(gè)模板后的接口

DefinePluginFilter('Filter_Plugin_Template_Compiling_End');

Template類讀取一個(gè)模板前的接口

DefinePluginFilter('Filter_Plugin_Template_GetTemplate');

Template類讀取一個(gè)模板前的接口

DefinePluginFilter('Filter_Plugin_Template_MakeTemplatetags');

大數(shù)據(jù)文章接口

DefinePluginFilter('Filter_Plugin_LargeData_Article');

大數(shù)據(jù)頁(yè)面接口

DefinePluginFilter('Filter_Plugin_LargeData_Page');

大數(shù)據(jù)評(píng)論接口

DefinePluginFilter('Filter_Plugin_LargeData_Comment');

大數(shù)據(jù)增減文章標(biāo)簽關(guān)聯(lián)表

DefinePluginFilter('Filter_Plugin_LargeData_CountTagArray');

大數(shù)據(jù)GetList函數(shù)

DefinePluginFilter('Filter_Plugin_LargeData_GetList');

xml-rpc頁(yè)的begin接口(1.5.1加入)

DefinePluginFilter('Filter_Plugin_Xmlrpc_Begin');

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容