navanem/navanem_payload_comments

GitHub: navanem/navanem_payload_comments

为 Payload 3.x 提供开箱即用的匿名评论、互动反应与审核管理功能的插件。

Stars: 1 | Forks: 0

# @navanem/payload-comments 为 Payload 3.x 提供匿名评论与互动功能 —— 支持 Markdown 评论正文、可选的发布前审核、心情表情、评论互动,以及最多 3 级嵌套回复。 ## 功能 - 任何人都可以使用心情表情进行评论(填写姓名 + 可选/必填的邮箱)。 - 评论正文支持安全的 **Markdown** 子集(粗体、斜体、代码、链接、列表、引用);永远不会渲染原始 HTML(无 XSS 风险)。 - 可通过可配置的表情集对现有评论进行互动反应。 - 在评论发布前提供可选的审核工作流 —— 可在运行时动态切换。 - 支持最多 3 级嵌套回复。 - 内置轻量级反垃圾机制(蜜罐、频率限制、长度/链接规则)。 - **Comments Settings** global:可在运行时针对每个 collection 启用/禁用评论。 - **Comment Statistics** 管理视图:提供 KPI、按 collection 和心情划分的统计明细以及带过滤器的最新评论。 - 提供开箱即用的 `` React 组件,您也可以基于 REST API 构建自己的组件。 ## 截图 ### 前端 ![已发布文章上的评论组件](https://www.navanem.com/api/media/file/navanem-plugin-payload-comments-frontend.png) 已发布页面上的内置 `` 组件:包含带有 Markdown 渲染正文的嵌套评论、心情表情和日期、互动反应栏和回复按钮,以及输入器(姓名、可选邮箱、Markdown 文本和心情)。 ### 审核(Comments collection) ![Payload 后台的评论审核队列](https://www.navanem.com/api/media/file/navanem-plugin-payload-comments-admin.png) 每条评论都会进入一个标准的 Payload collection,因此审核可以使用您熟悉的原生后台界面。列表就是您的审核队列 —— 展示作者、摘要、目标 collection、状态和日期 —— 并支持原生过滤和批量操作;批准待定评论后会立即发布。 ![后台中单条评论的详情视图](https://www.navanem.com/api/media/file/navanem-plugin-payload-comments-admin-details.png) 打开评论会显示其完整记录 —— 作者和邮箱、心情、关联文档和嵌套的父评论、用于反垃圾的加盐 IP/指纹哈希值 —— 以及用于批准、标记为垃圾或将其移至回收站的状态选择器。 ### 设置 ![Comments Settings global](https://www.navanem.com/api/media/file/navanem-plugin-payload-comments-admin-settings.png) **Comments Settings** global 可在运行时针对每个 collection 切换评论功能,并公开了 **Require approval** 开关,让您无需重新部署即可开启或关闭强制发布前审核。 ### 统计 ![Comment Statistics 管理视图](https://www.navanem.com/api/media/file/navanem-plugin-payload-comments-admin-statistics.png) **Comment Statistics** 视图:包含 KPI(按状态统计的总数、互动反应计数、每日频率)、按 collection 和心情划分的统计明细,以及最近评论表格 —— 所有内容均可按 collection、状态和时间段进行过滤,并在服务端通过身份验证进行拦截。 ## 安装 ``` pnpm add @navanem/payload-comments # 或者在发布前从 Git: pnpm add github:navanem/navanem_payload_comments ``` `payload`、`react` 和 `react-dom` 是 peer dependencies。 ## 快速开始 ``` // payload.config.ts import { commentsPlugin } from '@navanem/payload-comments' export default buildConfig({ // ... plugins: [ commentsPlugin({ enabledCollections: ['posts', 'pages'], requireApproval: true, requireEmail: false, }), ], }) ``` 在您的环境中设置用于 IP 哈希的 salt: ``` COMMENTS_IP_SALT="a-long-random-string" ``` ## 管理:设置与统计 该插件注册了一个 **Comments Settings** global(后台分组为 "Comments"),管理员可以在运行时针对每个 collection 切换评论功能。当某个 collection 被禁用时,将拒绝新的提交,并且 `` 组件会显示 "closed"(已关闭)通知,而不是评论列表。未设置 = 每个已配置的 collection 均被启用(fail-open)。同一个 global 还有一个 **Require approval** 复选框,可在运行时打开/关闭强制审核;提交流程会实时读取该设置,并回退到 `requireApproval` 选项。 它还在 `/admin/comments-statistics` 注册了一个 **Comment Statistics** 视图(KPI、按 collection 和心情划分的统计明细,以及最新评论,可通过 collection / 状态 / 时间段过滤),并通过 `afterNavLinks` 添加指向该视图的导航链接。该视图在服务端查询审核数据,并仅限通过身份验证的管理员用户访问。视图和导航链接组件通过宿主的 import map 在 vendored 路径 `@/plugins/payload-comments/components/*` 处进行引用。如果您将此插件 vendor 到 `src/plugins/payload-comments` 下,请添加匹配的 import-map 条目(运行 `payload generate:importmap`,或手动添加)。提供自定义导航的宿主可以忽略 `afterNavLinks` 条目,并自行放置 Statistics 链接。 ## 前端 ``` import { Comments } from '@navanem/payload-comments/client' export default function PostPage({ post }) { return } ``` 有关 props、样式以及无组件(原始 API)的集成方式,请参阅 [docs/frontend-integration.md](docs/frontend-integration.md)。 ## 文档 - [配置](docs/configuration.md) - [前端集成](docs/frontend-integration.md) - [审核](docs/moderation.md) ## License MIT © navanem 由 [navanem](https://www.navanem.com) 构建并在 [www.navanem.com](https://www.navanem.com) 生产环境中运行。
标签:MITM代理, Payload CMS, React, Syscall, Syscalls, Web开发, 内容审核, 插件, 自动化攻击, 评论系统