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