头像 V
admin UID:1 CEO  · 8天前

  xiuno插件开发-hook机制


133 0

Xiuno BBS的插件机制分为两种,一种是Hook,一种是Overwrite。

尽量使用 hook,而少用 overwrite(一般 overwrite 一下首页),这样就不怕主程序变动。

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

在 插件示例 中的实例就是基于 Hook 的

文件 view/htm/header.inc.htm 中的代码,包含一个 hook header_body_start.htm,我们来将代码插 入到此处:

...
<body>
<!--{hook header_body_start.htm}-->
<div id="wrapper">
...

 

制作插件 A:

plugin/
	my_plugin_a/
		conf.json
		hook/
			header_body_start.htm

 

假定 header_body_start.htm 的内容为:

Hello, Pugin A

 

 

有插件 B:

plugin/
	my_plugin_B/
		conf.json
		hook/
			header_body_start.htm

 

假定 header_body_start.htm 的内容为:

 

Hello, Pugin B

 

那么最后生成的文件位置在 tmp/view_htm_header_body_start.htm,内容为:

...
<body>
Hello, Pugin A
Hello, Pugin B
<div id="wrapper">
...

 

因为程序在 include 时候做了转换:

 

include _include('./view/htm/header.inc.htm');
// 基本等价于:
include ''./tmp/view_htm_header_body_start.htm;

 

 

XiunoBBS预埋了很多hook,你可以通过打开源代码查找你想插入的地方,比如view/htm/header.inc.htm中:

 

IMG_2201.jpeg

 

如果你要插入到钩子所在位置,只需要在你所在的插件目录的hook目录下,建立同名文件即可。

比较常见的几个文件:

view/htm/header.inc.htm            头部模板文件

view/htm/footer.inc.htm             页脚模板文件

view/htm/index.htm                    首页模板文件

view/htm/forum.htm                列表页模板文件

view/htm/thread.htm             详情页模板文件

view/htm/post.htm                     发帖模板页面

route/index.php                          首 页

route/forum.php                        列表页

route/thread.php                        详情页

route/post.php                          发帖页

 



已有回复 (0)
    暂无回复,快来抢沙发吧

    暂无回复,快来抢沙发吧

菜鸟米铺-用好米做好站 紫薇星语-Ai运势,科学测算
发新帖