说明:接口模式复制自Z-Blog ASP版。
定义常量
PLUGIN_EXITSIGNAL_NONE '' 插件运行中断方式:无
PLUGIN_EXITSIGNAL_RETURN 'return' 插件中断方式:return
PLUGIN_EXITSIGNAL_BREAK 'break' 插件中断方式:break
定义公共变量
$GLOBALS['plugins'] = array(); 总插件激活函数数组列表
$GLOBALS['hooks'] = array(); 总插件接口列表 P.S. 1.5版启用,逐渐过度到hooks
函数说明
1.注册插件函数,由插件主动调用。
参数1:插件ID
插件2:插件激活时执行的函数名
返回:没有
RegisterPlugin($strPluginName, $strPluginActiveFunction)
$GLOBALS['plugins'][$strPluginName] = $strPluginActiveFunction;
如上代码,这个函数实际就是将相关值写入公共数组。
2.安装插件函数,这个函数只会在安装插件时运行一次。
参数:插件ID
返回:没有
InstallPlugin($strPluginName)
if(function_exists($f = 'InstallPlugin_' . $strPluginName)){
$f();
}
如果对应的函数存在,执行之。
3.插件删除函数,这个函数只会在删除插件时运行一次。
参数:插件ID
返回:没有
UninstallPlugin($strPluginName)
if(function_exists($f = 'UninstallPlugin_' . $strPluginName) == true){
$f();
}
为什么这里要用true?
3.创建插件接口函数 DefinePluginFilter($strPluginFilter)
判断如果 $GLOBALS['hooks'][$strPluginFilter] 的值是否定义。如果没有,则定义对应空数组,且将该变量地址引用给 $GLOBALS[$strPluginFilter] 对应公共变量。此时即可直接使用对应插件相关数据。
4.检查插件接口函数 ExistsPluginFilter($strPluginFilter)
这个函数判断 $GLOBALS['hooks'][$strPluginFilter] 的值是否存在,返回 bool。
5.调用插件接口函数 &UsingPluginFilter($strPluginFilter)
这个函数判断 $GLOBALS['hooks'][$strPluginFilter] 的值是否存在,如果存在就返回对应的插件名字的数组,否则返回空数组。
&符号用于函数的引用操作,例如:$result = &UsingPluginFilter(); 则 $result 变量即指向函数的return的地址。修改变量可修改return对应结果。
6.移除插件接口 RemovePluginFilter($strPluginFilter)
函数判断对应的 $GLOBALS['hooks'][$strPluginFilter] 是否存在,如果存在,则
unset $GLOBALS['hooks'][$strPluginFilter] 和 $GLOBALS[$strPluginFilter],返回true。
以上是插件相关基本函数,下面即是过滤接口相关函数。也是本页大部分内容。
1.挂上Filter接口 Add_Filter_Plugin($plugname, $functionname, $exitsignal = PLUGIN_EXITSIGNAL_NONE)
参数1:插件名(ID)
插件2:要挂载的函数
参数3:插件中断方式,默认空。可以是空 return,break。continue这个没有?
返回:无
如果 isset($GLOBALS['hooks'][$plugname]) 插件名数组定义 且
isset($GLOBALS['hooks'][$plugname][$functionname]) 对应下的函数名没有定义
则 $GLOBALS['hooks'][$plugname][$functionname] = $exitsignal; 定义对应函数名,以及其中断方式。用法:
执行插件即 $Filter_Plugin_Zbp_LoadManage[$functionname](); 中断方式即 $Filter_Plugin_Zbp_LoadManage[$functionname] 的值,这是一个插件的函数执行,官方系统使用 foreach 将多个函数通过 $GLOBALS['hooks']['Filter_Plugin_Zbp_LoadManage'] 来执行。
2.以下使用函数定义插件过滤接口,只是定义。接口的相关位置在其他文章详细解答。 $GLOBALS['hooks'][$strPluginFilter] = array()
一个空的数组。
调试关闭处理程序,调试异常处理程序,调试错误处理程序
DefinePluginFilter('Filter_Plugin_Debug_Handler');
ZBlogException异常调试类Display函数处
DefinePluginFilter('Filter_Plugin_Debug_Display');
监控autoload魔术方法
DefinePluginFilter('Filter_Plugin_Autoload');
监控记录函数
DefinePluginFilter('Filter_Plugin_Logs');
DbSql类的SQL过滤和统计方法接口
DefinePluginFilter('Filter_Plugin_DbSql_Filter');
Zbp类的魔术方法接口
DefinePluginFilter('Filter_Plugin_Zbp_Call');
DefinePluginFilter('Filter_Plugin_Zbp_Get');
DefinePluginFilter('Filter_Plugin_Zbp_Set');
Zbp类的检查权限接口(检查当前用户)
DefinePluginFilter('Filter_Plugin_Zbp_CheckRights');
Zbp类的显示错误接口
DefinePluginFilter('Filter_Plugin_Zbp_ShowError');
Zbp类的显示验证码接口,具有唯一性
DefinePluginFilter('Filter_Plugin_Zbp_ShowValidCode');
Zbp类的比对验证码接口,具有唯一性
DefinePluginFilter('Filter_Plugin_Zbp_CheckValidCode');
Zbp类的重新编译模板接口
DefinePluginFilter('Filter_Plugin_Zbp_BuildTemplate');
Zbp类的生成模板标签接口
DefinePluginFilter('Filter_Plugin_Zbp_MakeTemplatetags');
Zbp类的生成模块内容的接口
DefinePluginFilter('Filter_Plugin_Zbp_BuildModule');
Zbp类的加载接口
DefinePluginFilter('Filter_Plugin_Zbp_Load');
Zbp类的加载(预处理)接口
DefinePluginFilter('Filter_Plugin_Zbp_Load_Pre');
Zbp类的后台管理初始加载接口
DefinePluginFilter('Filter_Plugin_Zbp_LoadManage');
Zbp类的终结接口(终结接口?)
DefinePluginFilter('Filter_Plugin_Zbp_Terminate');
前台view,index相关
定义index.php接口 起动
DefinePluginFilter('Filter_Plugin_Index_Begin');
定义index.php接口 结束
DefinePluginFilter('Filter_Plugin_Index_End');
c_html_js_add.php脚本调用,JS页接口需要强制开启
DefinePluginFilter('Filter_Plugin_Html_Js_Add');
搜索页接口,可以接管搜索页。
DefinePluginFilter('Filter_Plugin_Search_Begin');
搜索接口 结束
DefinePluginFilter('Filter_Plugin_Search_End');
Feed页接口,可以接管Feed页。
DefinePluginFilter('Filter_Plugin_Feed_Begin');
Feed页接口 结束
DefinePluginFilter('Filter_Plugin_Feed_End');
CMD里的接口
cmd.php的启动接口,可以在这里拦截各种action
DefinePluginFilter('Filter_Plugin_Cmd_Begin');
cmd.php的Ajax命令专用接口,插件需要自行判断权限
DefinePluginFilter('Filter_Plugin_Cmd_Ajax');
后台里的接口
定义Login.php首页header接口
DefinePluginFilter('Filter_Plugin_Login_Header');
定义其它页的header接口
DefinePluginFilter('Filter_Plugin_Other_Header');
c_system_misc里的接口
c_system_misc.php的启动接口,可以在这里拦截各种type
DefinePluginFilter('Filter_Plugin_Misc_Begin');
后台管理页的启动接口,可以拦截后台管理请求实现自己的管理
DefinePluginFilter('Filter_Plugin_Admin_Begin');
后台管理页的终结接口
DefinePluginFilter('Filter_Plugin_Admin_End');
定义后台首页header接口
DefinePluginFilter('Filter_Plugin_Admin_Header');
定义后台首页footer接口
DefinePluginFilter('Filter_Plugin_Admin_Footer');
定义后台左侧栏接口
DefinePluginFilter('Filter_Plugin_Admin_LeftMenu');
定义后台顶部导航栏接口
DefinePluginFilter('Filter_Plugin_Admin_TopMenu');
后台首页SubMenu
DefinePluginFilter('Filter_Plugin_Admin_SiteInfo_SubMenu');
文章管理SubMenu
DefinePluginFilter('Filter_Plugin_Admin_ArticleMng_SubMenu');
页面管理
DefinePluginFilter('Filter_Plugin_Admin_PageMng_SubMenu');
分类管理
DefinePluginFilter('Filter_Plugin_Admin_CategoryMng_SubMenu');
评论管理
DefinePluginFilter('Filter_Plugin_Admin_CommentMng_SubMenu');
用户管理
DefinePluginFilter('Filter_Plugin_Admin_MemberMng_SubMenu');
?
DefinePluginFilter('Filter_Plugin_Admin_UploadMng_SubMenu');
标签管理
DefinePluginFilter('Filter_Plugin_Admin_TagMng_SubMenu');
插件管理
DefinePluginFilter('Filter_Plugin_Admin_PluginMng_SubMenu');
主题管理
DefinePluginFilter('Filter_Plugin_Admin_ThemeMng_SubMenu');
模块管理
DefinePluginFilter('Filter_Plugin_Admin_ModuleMng_SubMenu');
设置管理
DefinePluginFilter('Filter_Plugin_Admin_SettingMng_SubMenu');
编辑页菜单(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Edit_SubMenu');
标签编辑页菜单(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Tag_Edit_SubMenu');
模块编辑页菜单(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Module_Edit_SubMenu');
用户编辑页菜单(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Member_Edit_SubMenu');
分类编辑页菜单(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Category_Edit_SubMenu');
文章管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_ArticleMng_Table');
页面管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_PageMng_Table');
分类管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_CategoryMng_Table');
评论管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_CommentMng_Table');
会员管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_MemberMng_Table');
附件管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_UploadMng_Table');
Tag管理页表处理(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Admin_TagMng_Table');
文章页面编辑页开始接口
DefinePluginFilter('Filter_Plugin_Edit_Begin');
文章页面编辑页结束接口
DefinePluginFilter('Filter_Plugin_Edit_End');
文章页面编辑1号输出接口
DefinePluginFilter('Filter_Plugin_Edit_Response');
文章页面编辑2号输出接口
DefinePluginFilter('Filter_Plugin_Edit_Response2');
文章页面编辑4号输出接口
DefinePluginFilter('Filter_Plugin_Edit_Response4');
文章页面编辑5号输出接口
DefinePluginFilter('Filter_Plugin_Edit_Response5');
文章页面编辑3号输出接口
DefinePluginFilter('Filter_Plugin_Edit_Response3');
分类编辑页输出接口
DefinePluginFilter('Filter_Plugin_Category_Edit_Response');
标签编辑页输出接口
DefinePluginFilter('Filter_Plugin_Tag_Edit_Response');
会员编辑页输出接口
DefinePluginFilter('Filter_Plugin_Member_Edit_Response');
模块编辑页输出接口
DefinePluginFilter('Filter_Plugin_Module_Edit_Response');
c_admin_js_add.php脚本页的接口
DefinePluginFilter('Filter_Plugin_Admin_Js_Add');
定义OutputOptionItemsOfCategories 类别的输出选项函数里的接口
DefinePluginFilter('Filter_Plugin_OutputOptionItemsOfCategories');
Event里的接口
VerifyLogin成功的接口
DefinePluginFilter('Filter_Plugin_VerifyLogin_Succeed');
Logout成功的接口
DefinePluginFilter('Filter_Plugin_Logout_Succeed');
定义GetPost输出结果接口
DefinePluginFilter('Filter_Plugin_GetPost_Result');
定义GetList输出结果接口
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');
会员编辑的核心接口
DefinePluginFilter('Filter_Plugin_PostMember_Core');
标签编辑的核心接口
DefinePluginFilter('Filter_Plugin_PostTag_Core');
分类编辑的核心接口
DefinePluginFilter('Filter_Plugin_PostCategory_Core');
评论发表的核心接口
DefinePluginFilter('Filter_Plugin_PostComment_Core');
文章编辑的核心接口
DefinePluginFilter('Filter_Plugin_PostArticle_Core');
页面编辑的核心接口
DefinePluginFilter('Filter_Plugin_PostPage_Core');
会员编辑成功的接口
DefinePluginFilter('Filter_Plugin_PostMember_Succeed');
标签编辑成功的接口
DefinePluginFilter('Filter_Plugin_PostTag_Succeed');
分类编辑成功的接口
DefinePluginFilter('Filter_Plugin_PostCategory_Succeed');
评论发表成功的接口
DefinePluginFilter('Filter_Plugin_PostComment_Succeed');
页面编辑成功的接口
DefinePluginFilter('Filter_Plugin_PostPage_Succeed');
文章编辑成功的接口
DefinePluginFilter('Filter_Plugin_PostArticle_Succeed');
模块编辑成功的接口
DefinePluginFilter('Filter_Plugin_PostModule_Succeed');
会员删除成功的接口
DefinePluginFilter('Filter_Plugin_DelMember_Succeed');
标签删除成功的接口
DefinePluginFilter('Filter_Plugin_DelTag_Succeed');
分类删除成功的接口
DefinePluginFilter('Filter_Plugin_DelCategory_Succeed');
评论删除成功的接口
DefinePluginFilter('Filter_Plugin_DelComment_Succeed');
页面删除成功的接口
DefinePluginFilter('Filter_Plugin_DelPage_Succeed');
文章删除成功的接口
DefinePluginFilter('Filter_Plugin_DelArticle_Succeed');
模块删除成功的接口
DefinePluginFilter('Filter_Plugin_DelModule_Succeed');
类里的接口
干预Base类data属性的接口
DefinePluginFilter('Filter_Plugin_Base_Data_Load');
干预Post类Url方法的接口
DefinePluginFilter('Filter_Plugin_Post_Url');
干预Category类Url方法的接口
DefinePluginFilter('Filter_Plugin_Category_Url');
干预Tag类Url方法的接口
DefinePluginFilter('Filter_Plugin_Tag_Url');
干预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类的魔术方法接口
DefinePluginFilter('Filter_Plugin_Post_Call');
Comment类的魔术方法接口
DefinePluginFilter('Filter_Plugin_Comment_Call');
Tag类的魔术方法接口
DefinePluginFilter('Filter_Plugin_Tag_Call');
Category类的魔术方法接口
DefinePluginFilter('Filter_Plugin_Category_Call');
Member类的魔术方法接口
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类编译一个模板前的接口
DefinePluginFilter('Filter_Plugin_Template_Compiling_Begin');
Template类编译一个模板后的接口
DefinePluginFilter('Filter_Plugin_Template_Compiling_End');
Template类读取一个模板前的接口
DefinePluginFilter('Filter_Plugin_Template_GetTemplate');
Template类读取一个模板前的接口
DefinePluginFilter('Filter_Plugin_Template_MakeTemplatetags');
大数据文章接口
DefinePluginFilter('Filter_Plugin_LargeData_Article');
大数据页面接口
DefinePluginFilter('Filter_Plugin_LargeData_Page');
大数据评论接口
DefinePluginFilter('Filter_Plugin_LargeData_Comment');
大数据增减文章标签关联表
DefinePluginFilter('Filter_Plugin_LargeData_CountTagArray');
大数据GetList函数
DefinePluginFilter('Filter_Plugin_LargeData_GetList');
xml-rpc页的begin接口(1.5.1加入)
DefinePluginFilter('Filter_Plugin_Xmlrpc_Begin');