钩子是插件执行的触发器;插件就像挂在钩子上的东西;
插件只有实现相应钩子方法,并安装启用成功后才能执行;
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 // 是否只执行一次
],
];