插件钩子

优质
小牛编辑
133浏览
2023-12-01

钩子是插件执行的触发器;插件就像挂在钩子上的东西;

插件只有实现相应钩子方法,并安装启用成功后才能执行;

ThinkCMF系统内置了很多钩子;请查看后台插件钩子管理里;

开发者也可以用hook方法在控制器中加入钩子,让你的应用具有更好的扩展性;

同时也可以模板里加入钩子<hook name="footer_start"/>

钩子也支持传入参数:

<php>$param="test";</php>
<hook name="footer_start" param="param"/>

向系统暴露你的钩子

就是把你的钩子在相应的文件里列出来,系统会来检测。

暴露应用控制器钩子(稍后支持):

在你的应用根目录加上hooks.php文件,文件中返回此应用所有钩子数组就可以了;

如给portal应用添加钩子:hooks.php(app/portal/hooks.php)文件内容

<?php
// +----------------------------------------------------------------------
// | ThinkCMF [ WE CAN DO IT MORE SIMPLE ]
// +----------------------------------------------------------------------
// | Copyright (c) 2013-2017 http://www.thinkcmf.com All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 老猫 <thinkcmf@126.com>
// +----------------------------------------------------------------------
return [
    'portal_before_assign_article'    => [
        "type"        => 2,//钩子类型(默认为应用钩子;2:应用钩子;3:模板钩子;4:后台模板钩子)
        "name"        => '文章显示之前', // 钩子名称
        "description" => "文章显示之前", //钩子描述
        "once"        => 0 // 是否只执行一次
    ],
    'portal_admin_after_save_article' => [
        "type"        => 2,//钩子类型(默认为应用钩子;2:应用钩子;3:模板钩子;4:后台模板钩子)
        "name"        => '后台文章保存之后', // 钩子名称
        "description" => "后台文章保存之后", //钩子描述
        "once"        => 0 // 是否只执行一次
    ],
];