系统文件说明c_system_plugin.php插件接口相关

说明:接口模式复制自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');

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,602评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,442评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,878评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,306评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,330评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,071评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,382评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,006评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,512评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,965评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,094评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,732评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,283评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,286评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,512评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,536评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,828评论 2 345

推荐阅读更多精彩内容