> 开发者也可以用hook方法在控制器中加入钩子,让你的应用具有更好的扩展性;
同时也可以后台模板里加入钩子
```
<hook name="footer_start"/>
```
钩子支持传入参数:
```
<php>$param="test";</php>
<hook name="footer_start" param="param"/>
```
## 1,向系统暴露你的钩子
> 就是把你的钩子在相应的文件里列出来,系统会来检测。
如何暴露应用控制器钩子:
在你的应用根目录加上hooks.php文件,文件中返回此应用所有钩子数组就可以了;
例如:要给portal应用添加新的钩子,需找到hooks.php,添加钩子信息
> app/portal/hooks.php
```
return [
'portal_admin_category_edit_view_main' => [
"type" => 4,//钩子类型(默认为应用钩子;2:应用钩子;3:模板钩子;4:后台模板钩子)
"name" => '门户后台分类添加编辑界面主要内容', // 钩子名称
"description" => "门户后台分类添加编辑界面主要内容", //钩子描述
"once" => 0 // 是否只执行一次
],
];
```
## 2,在插件里面声明
> plugins\article_field\ArticleFieldPlugin.php
```
public function portalAdminCategoryEditViewMain()
{
$Fields = FieldModel::all(['model'=>2]);
$this->assign('Fields',$Fields);
$request = request();
$id = $request->param('id');
if ($id) {
$post = PortalCategoryModel::get($id);
$this->assign('post',$post);
}
//var_dump($Fields);
echo $this->fetch('category');
}
```
## 3,后台钩子管理->同步钩子
##
## 4,后台模板中使用钩子
> \themes\admin_simpleboot3\portal\admin_category\add.html
模板里面合适的地方添加钩子
```
<hook name="portal_admin_category_edit_view_main"/>
```