- 关键词屏蔽ID keyword_moderation版本 1.0.5插件制作者 freepayzz免费288 行 / 21 KBHook / 后台页检测主题标题和内容中的违规关键词,支持拒绝发布或进入后台审核,并提供默认词库一键加入。app/plugins/keyword_moderation/plugin.php本插件的完善需要你的积极参与。安装使用中遇到任何,不要抱怨,请直接回帖描述,帮助开发者完善。开发日志已有 1 条
个人独立维护项目。
主楼 插件质量报告
插件:
keyword_moderationHook 功能范围 循环 使用频率 文件读写 修改系统表 读写系统表 读写自己的表 sidebar.stack 全站侧栏组件栈 否 5 - - - 写 plugin_keyword_moderation topic.before_render 首页/版块列表/主题查看逐条渲染 是 5 - - - 读 plugin_keyword_moderation 修正❗️ topic.after_save 主题保存后 否 3 - - app_users, app_groups, app_notifications 修正❗️ 写 plugin_keyword_moderation topic.before_save 主题发布/编辑表单提交 否 3 - - - - topic.form_extra 主题发布/编辑表单 否 2 - - - - topic.list_rows 非系统hook 否 1 - - - 写 plugin_keyword_moderation 颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。Hook 位于系统循环,或操作确实位于回调循环体内时,会标记“修正❗️”。
数据字典
plugin_keyword_moderation字段 类型 可空 默认值 约束 id id 否 - 主键、自增 topic_id uint 否 - 唯一 user_id uint 否 - - keywords text 否 - - status string 否 'pending' - reason string 否 '' - created_at uint 否 - - reviewed_at uint 否 0 - reviewed_by uint 否 0 - @freepayzz 用户审核插件里面有这个功能
🔍 插件审查报告(对照《AI 开发规则》与开发者文档)
🔒 安全问题
未发现明显问题。SQL 均参数化,输出已转义,审核/设置操作有 CSRF 与权限校验。
⚡ 性能问题
- plugin.php:204 在红区钩子
topic.before_render内执行val("SELECT status FROM plugin_keyword_moderation WHERE topic_id=?"),违反红区零 DB 读规则。建议把待审状态按主题 ID 批量预加载到内存,渲染钩子内仅做内存读取。
🐛 功能/规范缺陷
- plugin.php:284 注册的
topic.list_rows钩子在核心中并不存在,回调永远不会执行,导致首页/版块/搜索列表未过滤待审主题,标题仍对普通用户可见,与“待审主题对普通用户不可见”的说明不符。建议改用真实存在的钩子过滤列表(如topic.before_render的列表态处理),或向核心反馈补充列表数据钩子。 - plugin.php:7-9
keyword_moderation_defaults()用array_values()丢掉了关联键,默认值实际依赖各处??兜底。建议去掉array_values,返回以 enabled/mode/notify_admins 等为键的关联数组。 - plugin.php:238/254/269 页面用
need_admin(),审核操作却用need_manage()/can_manage(),权限口径不一致,仅有内容管理权限(无后台权限)的管理员无法进入审核页。建议统一权限口径。 - plugin.php:233 样式多处写死
font-size:13px/11px/12px;建议改用var(--font-size-*)语义变量。
✅ 修复优先级
优先修复列表过滤失效(核心功能与内容可见性),其次红区 DB 读,再补默认值与权限口径,最后改 CSS 变量。
- plugin.php:204 在红区钩子
旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。