本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:WWW/plugins/edit_info/说明.md。
编辑信息(edit_info)插件说明
版本:1.5.0 | 作者:SoSite | 状态:✅ 已启用
功能:记录帖子/回复的最后编辑人和编辑时间,在前端展示(纯钩子插件,无控制器、无页面)
一、功能简介
- 帖子或回复被编辑后,自动记录编辑人 + 编辑时间到
edit_history表 - 前台帖子/回复下方显示"最后由 X 于 Y 编辑"提示(
controller_view_before注入编辑信息) - 懒建表:正常编辑 0 额外查询;表不存在时自动建表后重试(try/catch 双保险)
- 无独立页面、无路由、无后台入口——完全通过钩子融入现有流程
二、目录结构
plugins/edit_info/
├── plugin.json # 插件清单(hooks: init_after / post_edit_after / thread_edit_after / controller_view_before)
├── Plugin.php # 生命周期(activate 建表 / uninstall 删表)
└── hook/
├── init_after.php # 初始化(幂等建表)
├── post_edit_after.php # 回复编辑后记录(惰性建表)
├── thread_edit_after.php# 主题编辑后记录(惰性建表)
└── controller_view_before.php # 视图渲染前注入编辑信息供展示三、数据表
| 表 | 用途 |
|---|---|
edit_history | 编辑记录(target_type['post' |
- 建表:
Plugin::activate()(存在则跳过)+ hook 内惰性建表(表缺失时自动创建) - 卸载:
uninstall()删除表
四、Hooks
| Hook | 用途 |
|---|---|
init_after | 幂等建表 |
post_edit_after | 回复编辑后写入记录(可用变量:$post_id / $thread_id / $user_id) |
thread_edit_after | 主题编辑后写入记录(可用变量:$thread_id / $user_id) |
controller_view_before | 读取最近编辑信息注入视图数据 |
五、工作流程
编辑回复/主题保存后
→ Plugin::hook('post_edit_after' | 'thread_edit_after')
→ 写入 edit_history(表不存在则先建表)
→ 渲染帖子页时 controller_view_before 读取最新记录
→ 模板显示 "最后由 {编辑人} 于 {时间} 编辑"六、注意事项
- 惰性建表模式:首次插入若表不存在,捕获异常 → 建表 → 重试插入,避免依赖 activate 时序
- 钩子内空值防御:
$post_id/$user_id为空直接 return - 卸载删表后历史编辑记录不可恢复,请谨慎