hook功能

燃烧的冰2020-01-14  372

wellcms 插件机制分为两种,一种是 Hook,一种是 Overwrite。

Hook 就是往代码里插入代码,多个插件的代码合并插入到 hook 指定的位置,最后生成的代码存放于 tmp 目录。


wellcms 每个文件几乎都有预留的 hook 位,具体想要 hook 什么功能,就查看哪个文件。


文件 view/htm/flat.htm 包含了一个 hook index_flat_start.htm 的钩子,我们就从这里开始:


新建插件目录

plugin/

    conf.json (配置文件)

icon.png (图标宽高:200*200)

my_plugin/  (插件目录)

hook/ (hook文件目录)

        index_flat_start.htm (要插入的文件代码)


index_flat_start.htm 文件代码为:

<div class="row">
    <div class="col-lg-12">
        <h1>
        Hello, my code!
        </h1>
    </div>
</div>


同一处钩子,多个文件进行hook,那么如何使我的文件优先hook呢?


根据 conf.json 文件 hooks_rank 配置,进行优先hook,使用方法如下:

{
    "name": "插件名example",
    "brief": "插件介绍example brief",
    "type": "0", // 无需修改
    "version": "1.0.0", // 插件版本
    "software_version": "2.0.0",
    "installed": 0,
    "enable": 0,
    "hooks_rank": {
        "index_flat_start.htm":"1000",
        "read_start.php":"100"
    }, // 最大值优先 hook 可以同时设置多个文件优先 hook 对应的数值越大越会被优先使用
    "overwrites_rank": [],
    "dependencies": [] // 依赖其他插件
}