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

 



1247 2
已有回复 (2)
  • V
    admin (靓号:1) 管理员 楼主 CEO @Ta 27天前   ( 智者不入建设美丽 )
    沙发

    不懂hook机制的,认真学习这个,懂了hook你就有了基本适配更改插件的能力

  • V
    admin (靓号:1) 管理员 楼主 CEO @Ta 18天前   ( 智者不入建设美丽 )
    椅子

    湘铭呀 请问一下,header_body_start.htm 这个里面写了一个A便签,在页面点击后如何跳转到新页面,插件中的。如何命名还有位置如何放!感谢!

    没明白你的意思,说明白点,

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