
# 插件管理页面优化
## 概述
对后台插件管理页面进行了全面优化,包括插件/模板分类、智能排序、搜索筛选、网格布局等功能。
## 改动文件
| 文件 | 改动内容 |
|------|----------|
| `install/install.sql` | 新增 `bbs_plugin` 表 |
| `model/plugin.func.php` | 新增数据库操作函数、类型判断函数、修改安装/启用/禁用逻辑 |
| `admin/route/plugin.php` | 新增排序、筛选、搜索逻辑 |
| `admin/view/htm/plugin_list.htm` | 重构为网格布局 + Tab + 搜索筛选 |
| `lib/UpgradeService.php` | 新增 `upgradePluginTable()` 升级步骤 |
## 数据库
### 新增表 `bbs_plugin`
| 字段 | 类型 | 说明 |
|------|------|------|
| `dir` | varchar(64) PK | 插件目录名 |
| `name` | varchar(128) | 插件名称 |
| `type` | tinyint(1) | 0=插件, 1=模板 |
| `installed` | tinyint(1) | 是否已安装 |
| `enable` | tinyint(1) | 是否已启用 |
| `install_time` | int(11) | 安装时间 |
| `enable_time` | int(11) | 最后启用时间 |
| `disable_time` | int(11) | 最后禁用时间 |
| `create_time` | int(11) | 记录创建时间 |
| `update_time` | int(11) | 记录更新时间 |
### 升级方式
通过后台升级页面执行「插件管理表」步骤,会自动创建表并初始化现有插件数据。
## 插件/模板区分
采用混合方案判断插件类型:
1. **优先检查 `conf.json` 中的 `type` 字段**(值为 `theme`/`template`/`skin` 则为模板)
2. **检查目录名关键词**(包含 `theme`/`template`/`skin`/`风格`/`模板` 则为模板)
3. **检查插件名称关键词**
建议插件开发者在 `conf.json` 中添加 `"type": "theme"` 或 `"type": "plugin"` 字段。
## 排序规则
插件列表按以下优先级排序:
1. **刚刚安装**(24小时内)→ 按 `install_time` 倒序
2. **刚启用**(24小时内)→ 按 `enable_time` 倒序
3. **启用中** → 按 `enable_time` 倒序
4. **已安装未启用** → 按 `install_time` 倒序
5. **未安装** → 按名称字母排序
## 前端功能
### Tab 切换
- 全部 / 插件 / 模板 三个标签页,通过 `type` 参数筛选
### 搜索
- 支持按插件名称、简介、目录名搜索,通过 `keyword` 参数
### 状态筛选
- 全部状态 / 已启用 / 已安装未启用 / 未安装,通过 `status` 参数
### 网格布局
- 响应式网格:`col-12` / `col-md-6` / `col-lg-4` / `col-xl-3`
- 每个卡片固定高度,简介区域固定 2 行占位
- 卡片悬停阴影效果
## 新增函数
### `model/plugin.func.php`
| 函数 | 说明 |
|------|------|
| `plugin_is_theme($dir, $conf)` | 判断是否为模板插件 |
| `plugin_db_get($dir)` | 获取单个插件数据库记录 |
| `plugin_db_get_all()` | 获取所有插件数据库记录 |
| `plugin_db_init($dir, $conf)` | 初始化插件数据库记录 |
| `plugin_db_set_installed($dir, $installed)` | 更新安装状态和时间 |
| `plugin_db_set_enable($dir, $enable)` | 更新启用状态和时间 |
| `plugin_db_init_all()` | 批量初始化所有插件数据 |
| `plugin_read_by_dir_with_db($dir)` | 合并数据库和 conf.json 获取插件信息 |
### 修改的函数
| 函数 | 改动 |
|------|------|
| `plugin_install($dir)` | 新增 `plugin_db_init()` + `plugin_db_set_installed()` + `plugin_db_set_enable()` |
| `plugin_unstall($dir)` | 新增 `plugin_db_init()` + `plugin_db_set_installed(0)` + `plugin_db_set_enable(0)` |
| `plugin_enable($dir)` | 新增 `plugin_db_init()` + `plugin_db_set_enable(1)` |
| `plugin_disable($dir)` | 新增 `plugin_db_init()` + `plugin_db_set_enable(0)` |
## URL 参数
访问插件列表页时支持以下查询参数:
| 参数 | 值 | 说明 |
|------|-----|------|
| `type` | 0/1/2 | 0=全部, 1=插件, 2=模板 |
| `status` | 0/1/2/3 | 0=全部, 1=已启用, 2=已安装未启用, 3=未安装 |
| `keyword` | string | 搜索关键词 |
示例:`?admin-plugin.htm&type=1&status=1&keyword=签到`