白话插件钩子
我的理解是:钩子是插件的一个标识位置,在模板中放入一个插件的钩子,当模板输出到此钩子位置时,就调取插件的相应内容
Tips:
向系统暴露你的钩子 ( 在你的应用根目录加上hooks.php文件 ,
文件中返回此应用钩子数组 )
插件主类中实现钩子方法
在模板合适位置放入钩子即可
首先:在 portal 应用的hooks.php中暴露钩子
位置时:app/portal/hooks.php
暴露插件钩子
其次:在插件主类中实现钩子方法
实现钩子方法
最后:在模板合适位置放入钩子即可
效果:安装插件后,访问页面,实现的效果就是在插件位置,运行了shopStart方法,如图:
效果展示
插件目录:public/plugins
插件目录命名规则:全小写使用_
分隔单词,与命名空间一致,eg:eyunzhu_shop
插件类名命名规则:采用大驼峰命名法,都带 Plugin类名后缀,eg:EyunzhuShopPlugin.php
注意插件 name 要与类名前部分完全一致,否则安装会出现:插件不存在
重复一遍,分三步使用钩子
在相应应用模块的hooks.php中加入钩子
在模板合适位置放入钩子
在插件主类中实现钩子方法
在app/portal/hooks.php 添加模板钩子
return [ 'shop_start' => [ "type" => 3,//钩子类型(默认为应用钩子;2:应用钩子;3:模板钩子;4:后台模板钩子) "name" => '商城开始', // 钩子名称 "description" => "商城在此开始", //钩子描述 "once" => 0 // 是否只执行一次 ], ]
在模板中使用钩子 public/themes/simpleboot3/portal/index.html
中加入<hook name="shop_start"/>
//主类部分代码namespace plugins\eyunzhu_shop;use cmf\lib\Plugin;class EyunzhuShopPlugin extends Plugin{ public $info =[ 'name' => 'EyunzhuShop',//注意name 要与类名前部分完全一致,否则安装会出现:插件不存在 'title' =>'商城插件', 'description' =>'整合支付宝及发卡的商城插件', 'status' => 1, 'author' => 'eyunzhu', 'version' => '1.0', 'demo_url' => 'http://tool.eyunzhu.com', 'author_url' => 'https://eyunzhu.com', ]; //实现的 shop_start 钩子方法 public function shopStart($param) { echo "this is eyunzhu_shop Plugin"; } ......
文章原地址:https://eyunzhu.com/997.html
QQ登录插件:https://www.thinkcmf.com/appstore/plugin/262.html
0.话题发布后没及时显示,请联系官方QQ群管理;
1.话题支持代码,qq截屏直接粘贴,和QQ群一样;
2.问题描述清,比如服务器版本,程序版本;
3.能上代码,就不用文字;
4.把问题发到话题后再发QQ群;
5.如果感觉回复者解答的不错,可以发红包!
6.多帮助别人也是对自己的锻炼!
7.付费讨论中只有提问者和付费用户才可以查看回复
1.评论积分+1;每天最多10次奖励
2.发布话题积分+1;每天最多5次奖励
3.垃圾评论积分-500;
4.黄色,暴力,违反我国法律评论直接封号