齐博X1有两套钩子体系,第一套是基于TP思路设计的。跟外面的大同小异。现在重点讲一下第二套我们首创的使用方法。

首先说一下如何埋钩子,这个跟TP思路的钩子类似,就是在页面的任何地方加入如下代码即可
如下图

$this->get_hook('index_begin',$data=[],$this->user);
它其实有5个参数,

第一个参数就是钩子标志,必须要唯一的,

第二个是参数$data是可以改变其值的,一般用在POST表单的变量,比如发表的时候,你可以中途篡改其中的某项值

第三个$info一般指从数据库取出的资料,

第四个$array 是综合项,比如里边有id fid之类的值,

第五项只能设置 true 或 false 默认是true 即同时调用 公共的文件 否则只能调用本频道插件的文件。

建议大家在开发频道或应用的时候,尽可能的多预留接口,埋好钩子,方便别人扩展二开。这个不会影响网站整体速度,因为这个不是预加载的,是访问到此页面的时候,才加载的。


下面再讲解一下如何使用?
如上图的文件\application\common\controller\IndexBase.php 里边加了一个index_begin 标志的钩子,那么就可以
创建目录\application\common\ext\index_begin\ 在里边随便创建一个PHP文件,就可以实现钩子的调用了。
php的文件名必须是字母或数字或下画线或横杠线即负号
如下图

这种是把文件放在common目录是全站都能公用的。如果你的钩子文件只为具体某个频道考虑的话,就可以不要占用公共目录的资源,而只放在自己所在频道或插件目录即可。比如你只针对商城的钩子,就可以只在商城里边创建目录,如下所示:
\application\shop\ext\index_begin\

如下图

也就是说钩子文件即可以放在频道插件目录,也可以放在公共区域的common目录下。
放进去就立即生效,不用做任何设置。要停用,就只能手工把文件删除。

频道目录与公共目录,如果存在同名的钩子文件, 那么公共目录的那个钩子就不生效。频道目录的优先级最高。
并且频道目录的所有钩子执行完毕以后,再执行公共目录的钩子文件。
对于当前目录的钩子文件执行顺序如下:
数值越小,越先执行,也即数字最先,其次是字母。如果有带符号的情况下。横杠线即负号开头的最先。然后就数字,然后才是下画线开头,最后才是字母。字母的话,a比z的优先级高。大家的钩子如果有逻辑顺序的话,要注意文件的命名规则。

钩子里边的代码如果出现

return true;
return false;
return [];
return '';
return '这是内容';

就会直接把后面的所有钩子终止掉,也就是后面的钩子不会再执行。
一般情况,不要return 任何东西。实在要return 的话,你可使用

return ;
return null;

这两种就不会终止后面的其它钩子执行。
包括第一种基于TP思路设计的钩子也是跟这个一样的情况。

在控制器里边用钩子,你可以直接使用当前类里边的属性及所有方法。因为本质上就相当于包含进来的代码。
而基于TP思路的钩子是不能 使用当前类的属性与方法的,因为它是执行引用外面的类。

如果不在控制器里边用钩子,比如在模型里边或者在模板里边用钩子的话,就用函数,而不能使用$this->get_hook
如下图

get_hook('cms_model_agree_begin',$data=[],$info,['id'=>$id],true);

这里用的是函数
参数跟上面的一样的。

在模板中的话就这样使用

{:get_hook('layout_body_head',$info,$userdb)}

如下图

在模型或模板中就不能使用当前的类的属性了,就跟TP思路的钩子差不多了。

齐博x1齐博首创钩子的使用方法的更多相关文章

  1. 自建流媒体如何录制视频。齐博x1齐博x2齐博x3齐博x4齐博x5齐博x6齐博x7齐博x8齐博x9齐博x10

    http://x1.eapis.site/ 先打开配置文件\conf\config.php 里边的内容大概如下,第一项是必须要配置的,换成你的网站域名网址.第二项,如果流媒体服务器配置了https证书 ...

  2. 表单快速启用城市地区功能 齐博x1齐博x2齐博x3齐博x4齐博x5齐博x6齐博x7齐博x8齐博x9齐博x10

    比如分类系统\application\fenlei\config.php 修改这个文件,里边加入参数 'use_area'=>true, 那么会员中心与后台的,修改发布页面,都会自动加上城市地区 ...

  3. 频道插件如何对接圈子 齐博x1齐博x2齐博x3齐博x4齐博x5齐博x6齐博x7齐博x8齐博x9齐博x10

    圈子黄页里要显示对应频道的数据列表,一般没有特殊要求的话,不需要建立PHP文件, 只须要做好模板即可,比如 \template\index_style\default\qun\shop\index.h ...

  4. 齐博x1模型里边钩子的创建与使用

    在模型里边的钩子创建与使用方法跟在控制器里边的钩子创建及使用方法是有所区别的在模型里边创建的钩子,你可以理解为执行一个函数,是无法调用模型里边的类的方法及属性的.比如系统文件\application\ ...

  5. 齐博x1到底是怎么的存在?

    齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. 系统已经对接好QQ.微信登录,同 ...

  6. 齐博X1到底是个什么鬼?

    什么是齐博/齐博CMS之X1? 齐博X1是齐博软件基于thinkphp5开发的内容管理系统,拓展性非常强,后台一键升级,后台提供丰富的频道模块云市插件市场.风格市场.钩子市场,所有都是一键在线安装. ...

  7. 最近无聊搭建一个齐博X1的下载页面

    https://layui.wanxiangsucai.com/ 用layui官方镜像站的模版 改了个齐博X1的下载页面 https://x1.wanxiangsucai.com/ 哈哈哈!!! 还有 ...

  8. 齐博x1第四季《模块插件的制作》系列21-公共表单器的参数选项(7)

    password 密码类型 和text一样,只不过type类型是password,密码类型输入时,显示星号.即Html中的密码框类型 icon 字体图标类型 和列表页一样,把css的字体图标引入到了表 ...

  9. 利用Hexo搭建个人博客-博客发布篇

    通过 <利用Hexo搭建个人博客-环境搭建篇> 以及 <利用Hexo搭建个人博客-博客初始化篇>,我们了解到了利用Hexo搭建个人博客需要的环境以及配置,下面这篇文章将会介绍如 ...

随机推荐

  1. 万答#14,xtrabackup8.0怎么恢复单表

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源. 实 ...

  2. gitpod.io,云端开发调试工具。

    gitpod,一款在线开发调试工具,使用它你可以在网页上直接开发软件项目了. 比如你的项目仓库在github上,你可以直接在网址的前面添加gitpod.io/#,然后回车就能在网页上使用vscode打 ...

  3. 《DevOps围炉夜话》- Pilot - CNCF开源DevOps项目DevStream简介 - feat. PMC成员胡涛

    本文作者:aFlyBird0 个人主页:https://blog.aflybird.cn/ 开门见山 这是<DevOps围炉夜话>系列节目的第一期.在这期首秀中,我们邀请到了 DevStr ...

  4. vue自定义switch开关,使用less支持换肤

    实际项目用到了,记录一下,也方便以后使用,这样也可以避免为了使用一个switch,引入整个外部web框架: 也可以方便更好的理解是和使用less. 基础代码使用的是网上的,然后自己添加了less换肤, ...

  5. 数据结构与算法【Java】03---栈

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

  6. 来瞧瞧,WPF 炫酷走马灯!

    来瞧瞧,WPF 炫酷走马灯! 控件名:SpotLight 作者:WPFDevelopersOrg 原文链接: https://github.com/WPFDevelopersOrg/WPFDevelo ...

  7. Think PHP 完整的带富文本格式以及图片上传,并且在页面上分页展示

    Think php6.0官网网址:序言 · ThinkPHP6.0完全开发手册 · 看云 (kancloud.cn) 下面是基础配置 第一步:创建TP框架,命名为tp composer create- ...

  8. TCP/UDP报文格式

    TCP报文格式 源端口:数据发送方的端口号 目的端口:数据接收方的端口号 序号:本数据报文中的第一个字节的序号(在数据流中每个字节都对应一个序号) 确认号:希望收到的下一个数据报文中的第一个字节的序号 ...

  9. 批量修改DNS记录的TTL值

    最近有个需求,需要修改Windows DNS服务器上区域下所有A记录的TTL值.原先默认的TTL是1小时.也就是说,其它DNS服务器会缓存查询到的记录1个小时.对于近期需要大量修改记录的情况来说这样生 ...

  10. 聊聊计算机之Intel CPU的MESI协议

    1.on-chip概念 on-chip:每个CPU有好几个物理核,它们分布在CPU上,称为on-chip on-chip first cache:每个核内的一级缓存 on chip branch ta ...