找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 8|回复: 0

Xiuno插件开发手册(AI 开发指导)

[复制链接]

3

主题

0

回帖

19

积分

新手上路

积分
19
发表于 昨天 19:53 | 显示全部楼层 |阅读模式
根据我获取到的内容,让我为你整理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` - 路由hook
3. 在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插件开发的核心内容。需要我详细解释某个部分吗?

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|一起港湾 ( 青ICP备2025004122号-1 )

GMT+8, 2026-2-10 10:24 , Processed in 0.100800 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表