跳到主要内容

前置钩子

钩子名称说明
cms_index_run系统运行前置可用于IP,地域拦截等
cms_index_begin路由拦截需return array,array格式参照/setting/route/index.php文件

系统后台钩子

钩子名称说明
admin_top_menu插件按钮位于顶部菜单
admin_left_menu插件按钮位于左侧菜单
admin_logs_submenu_hook插件按钮位于文章列表上方
admin_logs_edit_hook文章扩展钩子传参$data文章数据,位于文章编辑器上方
admin_logs_edit_hook2文章扩展钩子2传参$data文章数据,位于文章编辑器下方
admin_logs_edit_hook3文章扩展钩子3传参$data文章数据,位于文章发布按钮上方
admin_logs_post文章新增、修改前置传参$logId、$data和$oldData(V3.5.1)
admin_logs_save文章新增、修改传参$logId和$oldData(V3.0.0)
admin_logs_dele文章删除传参$ids,如:1,2,3
admin_logs_status文章状态更改传参$ids,如:1,2,3
admin_pages_submenu_hook插件按钮位于单页列表上方
admin_pages_edit_hook单页扩展钩子传参$data单页数据,位于单页编辑器上方
admin_pages_edit_hook2单页扩展钩子2传参$data单页数据,位于单页编辑器下方
admin_pages_edit_hook3单页扩展钩子3传参$data单页数据,位于单页发布按钮上方
admin_pages_save单页新增、修改传参$pageId,如:1
admin_pages_dele单页删除传参$ids,如:1,2,3
admin_comment_submenu_hook插件按钮位于评论列表上方
admin_attach_upload附件上传传参$filepath,如:D:/www/aaa.jpg
可用户图片加水印
comment_reply回复评论传参$data(回复的数据数组)
可用于邮件通知用户

系统前端钩子

仅用于index应用。

钩子名称说明
comment_post前台评论前置在保存数据前使用
comment_save前台评论后置在保存数据后使用
index_header头部扩展用于存放公共css等
index_footer底部扩展用于存放公共mod,js等
index_search内容搜索
index_logs_list文章列表扩展传参$data文章列表数组
index_logs_detail文章/单页内容扩展传参$data文章/单页数据
index_comment评论扩展(V1.9.4新增)可用于评论内容过滤、内容置换等
index_down附件下载前置可用于更新下载量,授权下载等

使用钩子

引入钩子:use rp\Hook;

添加钩子

Hook::addHook(名称,执行控制器::执行方法),如:

Hook::addHook('hookName', 'plugin\demo\index::action');

删除钩子

Hook::deleHook(名称,执行控制器::执行方法),如:

Hook::deleHook('hookName','plugin\demo\index::action');

执行钩子

Hook::doHook(名称, $areg, $isReturn),如:

提示

$args为钩子的传递参数(数组形式),$isReturn默认false。
当$args传递钩子的指定方法时,$isReturn可为钩子的传递参数,第四参数可为$isReturn。
当$isReturn为true时,如果hook拥有多个,那么除第一个外其他不会执行。

//运行hookName钩子
$res=Hook::doHook('hookName');

//运行hookName钩子带参数,带上&表示引用参数
$args='this is args';
$res=Hook::doHook('hookName', [&$args]);

//运行hookName钩子带参数并返回
$args='this is args';
$res=Hook::doHook('hookName', [$args], true);

//运行hookName钩子的指定方法
$action='plugin\demo\index::action';
$res=Hook::doHook('hookName', $action);

//运行hookName钩子的指定方法并返回
$action='plugin\demo\index::action';
$res=Hook::doHook('hookName', $action, true);

//运行hookName钩子的指定方法并带参数
$action='plugin\demo\index::action';
$res=Hook::doHook('hookName', $action, ['this is args']);

//运行hookName钩子的指定方法带参数并返回
$action='plugin\demo\index::action';
$res=Hook::doHook('hookName', $action, ['this is args'], true);
提示
  • 钩子是以数组形式返回执行结果,若同一个Hook有多个对应方法,则返回[res1,res2,res3,...],res是字符串还是其他形式取决于hook对应方法的返回数据。
  • 如果hook只有一个对应方法,想获取执行结果,则使用$res[0]获取。

获取钩子

Hook::getHook(名称)

判断钩子是否存在

Hook::hasHook(名称)

保存钩子缓存文件

Hook::saveHook()

初始化清空钩子

Hook::setHookNull()