比如 wellcms php功能或htm 模板无法满足需要时,这个时候你可以使用 Overwrite 机制,对原有文件进行覆盖。如果新的覆盖文件中仍保留了旧有的 hook 钩子,那么系统仍会进行 hook 到该文件的钩子处,最后将合并后的文件存放到tmp目录里。
不推荐使用这种方式开发插件,因为官方更新程序使用了新的文件,而您却用自己的文件覆盖了新的文件,会导致系统bug。
举例,对官方默认 view/htm/header_nav.inc.htm 文件进行覆盖:
在 plugin 目录下新建插件目录 my_plugin
plugin/
conf.json (配置文件)
icon.png (图标宽高:200*200)
my_plugin/ (插件目录)
overwrite/ (覆盖文件目录)
view/ (覆盖文件目录)
htm/ (覆盖文件目录)
header.inc.htm (被覆盖的文件)
完整的路径为 plugin/my_plugin/overwrite/view/htm/header.inc.htm
以下文件可以被 overwrite:
index.inc.php
route/*.php
model/*.php
view/htm/*.htm
admin/view/htm/*.htm
admin/route/*.php
admin/index.inc.php
admin/menu.conf.php
lang/*.php
如果多个插件同时都使用了 overwrite 一个文件,那么如何保证自己的被优先使用。相同文件多处 overwrite 程序只将会进行一次 overwrite。如何使自己的文件被采用进行overwrite?
根据 conf.json 文件 overwrites_rank 配置,进行选择使用哪个文件 overwrite ,多个插件同时 overwrite 一个文件,程序会根据 设置的最大值 overwrite
{
"name": "插件名example",
"brief": "插件介绍example brief",
"type": "0", // 无需修改
"version": "1.0.0", // 插件版本
"software_version": "2.0.0",
"installed": 0,
"enable": 0,
"hooks_rank": [], // 同一点hook优先插入
"overwrites_rank": {
"header.inc.htm":"1000",
"index.php":"100"
}, // 仅限最大值 overwrite 一次,可同时设置多个文件优先 overwrite 对应的数值越大越会被优先使用
"dependencies": [] // 依赖其他插件
}
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。
各类知识收集 拥有多年CMS企业建站经验,对