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

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

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

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

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

钩子也支持传入参数:

  1. <php>$param="test"</php>
  2. <hook name="footer_start" param="param"/>

向系统暴露你的钩子

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

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

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

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

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

原文: https://www.thinkcmf.com/docs/cmf/插件钩子.html