根据我获取到的内容,让我为你整理Xiuno插件开发手册的核心内容:## Xiuno BBS 插件开发手册### 一、核心概念#### 1. MVC 分层架构
Xiuno BBS 采用MVC设计模式:- **Model (模型)**:处理数据,如从数据库读取或保存数据
- **View (视图)**:用户界面,通常指HTML内容
- **Controller (控制器)**:控制逻辑,接收用户请求并调用相应模型方法**目录对应关系**:
- `route/` - Controller层(路由控制器)
- `model/` - Model层(数据处理)
- `view/` - View层(HTML/CSS/JS等显示文件)#### 2. AOP 面向切面编程
Xiuno BBS 通过Hook机制实现AOP,允许在不修改原有代码的情况下插入额外功能。**工作原理**:
1. 系统加载页面时,检查所有插件hook文件夹中是否存在与hook点注释对应的文件
2. 如果存在,将文件中的代码插入到原始文件的hook点注释处
3. 将合并后的代码保存到tmp文件夹中
4. 几乎所有代码都在tmp文件夹中运行**Hook点示例**:
```html
<!--{hook index_site_brief_before.htm}-->
```当你的插件hook文件夹中有`index_site_brief_before.htm`文件时,其内容会自动插入到这个位置。### 二、插件机制Xiuno BBS 提供两种插件机制:#### 1. Hook 机制(插入代码)
- 往代码里插入代码
- 多个插件的代码合并后插入到hook指定的位置
- 生成的代码存放在tmp目录#### 2. Overwrite 机制(覆盖文件)
- 覆盖原来的文件
- 插件目录结构示例:
```
plugin/my_plugin/
├── conf.json # 配置文件
├── icon.png # 图标(54x54)
├── hook/ # Hook文件目录
│ └── index_route_case_end.php
└── overwrite/ # 覆盖文件目录
└── view/htm/
└── header.inc.htm
```### 三、插件目录结构一个完整的插件目录结构:
```
plugin/my_plugin/
├── conf.json # 插件配置文件
├── icon.png # 插件图标(54x54像素)
├── hook/ # Hook文件目录
│ ├── index_route_case_end.php
│ └── index_site_brief_before.htm
├── overwrite/ # 覆盖文件目录
│ └── view/htm/
│ └── header.inc.htm
└── route/ # 路由文件目录(可选)
```### 四、插件配置文件 (conf.json)配置文件格式示例:
```json
{
"name": "插件名称",
"brief": "插件简介",
"version": "1.0",
"author": "作者名"
}
```### 五、插件命名规范插件名通过下划线分割:
- 第一个单词:插件作者名缩写
- 第二个单词:功能名称(唯一标志)
- 第三个单词(可选):额外标志**互相卸载机制**:
- 相同功能名称的插件只能安装一个
- 安装新插件时,会自动卸载同功能名的旧插件
- 风格插件也只能安装一个### 六、数据库操作函数Xiuno BBS 封装了数据库操作函数:```php
// 查询单条记录
db_sql_find_one($sql, $d = NULL);// 查询多条记录
db_sql_find($sql, $key = NULL, $d = NULL);// 执行SQL语句
db_exec($sql, $d = NULL);// 计算记录数
db_count($table, $cond = array(), $d = NULL);// 获取最大ID
db_maxid($table, $field, $cond = array(), $d = NULL);// 插入记录
db_insert($table, $arr, $d = NULL);// 替换记录(存在则更新,不存在则插入)
db_replace($table, $arr, $d = NULL);// 更新记录
db_update($table, $cond, $update, $d = NULL);// 删除记录
db_delete($table, $cond, $d = NULL);
```### 七、开发实例#### 创建一个单页插件1. 创建插件目录:
```
plugin/my_plugin/
```2. 创建必要文件:
- `conf.json` - 配置文件
- `icon.png` - 图标(54x54)
- `hook/index_route_case_end.php` - 路由hook3. 在hook文件中添加路由逻辑:
```php
<?php
case 'my_page':
include _include(APP_PATH.'plugin/my_plugin/my_page.php');
break;
```4. 创建页面文件 `my_page.php`### 八、重要提示1. **使用_include函数**:必须使用`_include()`而不是`include()`来引入文件
2. **清除缓存**:遇到"玄学问题"时,可以点击后台"其他"里的"清除缓存"
3. **JSON输出**:在请求参数中加上`ajax=1`即可输出JSON数据(可能需要安装官方API插件)
4. **单入口设计**:所有请求都通过`index.php`处理这就是Xiuno BBS插件开发的核心内容。需要我详细解释某个部分吗?