头像 V
admin UID:靓1 管理员CEO 4月前 ( 什么大佬? _)
  xiuno插件开发-hook机制

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                          发帖页

 



1334 1
已有回复 (1)
  • Fuck (UID:112) LV.1 @Ta 2月前   ( 这家伙太懒了,什么也没留下。 )
    #0

    好的,学习了

菜鸟米铺-用好米做好站
发新帖