Skip to contentSkip to main navigation Skip to footer

开发插件

创建插件

创建的插件可以在view视图中使用,也可以在php业务中使用 安装完成后访问系统时会在项目根目录生成名为addons的目录,在该目录中创建需要的插件。 下面写一个例子:

  • 创建mydemo插件
  • addons目录中创建mydemo目录
  • 创建钩子实现类
  • mydemo目录中创建Mydemo.php类文件。注意:类文件首字母需大写

创建插件配置文件

mydemo目录中创建config.php类文件,插件配置文件可以自定义一些参数,然后在程序任何位置使用 get_addon_config(mydemo) 来获取定义的参数,后台打开配置视图为插件按钮的配置入口。

完整的config.php示例

创建钩子模板文件

mydemo目录中创建info.html模板文件,钩子在使用fetch方法时对应的模板文件。

  • 如果插件中需要有链接或提交数据的业务,可以在插件中创建controller业务文件,
  • 要访问插件中的controller时使用addon_url生成url链接。
  • 如下:
  • 格式为:
  • mydemo为插件名,Actioncontroller中的类名,linkcontroller中的方法
  • 创建插件的controller文件
  • mydemo目录中创建controller目录,在controller目录中创建Action.php文件 controller类的用法与tp5中的controller一致

如果需要使用view模板则需要继承thinkaddonsController类 模板文件所在位置为插件目录的view中,规则与模块中的view规则一致

行为事件【钩子】

Mydemo.php 自定义 mydemohook 事件后,就可以在正常业务中使用该插件中的钩子了 使用钩子的时候第二个参数可以省略。苹果cms中的行为支持ThinkPHP5的所有行为,以下是所有所支持的行为事件。

标签位描述类型说明
app_init应用初始化标签位系统
app_begin应用开始标签位系统
module_init模块初始化标签位系统
action_begin控制器开始标签位系统
view_filter视图输出过滤标签位系统
app_end应用结束标签位系统
log_write日志write方法标签位系统
log_write_done日志写入完成标签位系统
response_end输出结束标签位系统
response_send响应发送标签位 系统

示例代码

  • 比如我要写一个功能希望它 在 视图输出 时自动执行,那么只需要在 Mydemo.php 创建 viewFilter 方法即可,当插件启用时自动注册到view_filter 中,并且全局运行,不需要你在前台控制器或者模板中手动调用。

模板中调用自定义行为

php中调用自定义行为 只要是thinkphp5正常流程中的任意位置均可以使用

最终生成的目录结构为