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 构建自己的组件。
## 截图
### 前端

已发布页面上的内置 ` ` 组件:包含带有 Markdown 渲染正文的嵌套评论、心情表情和日期、互动反应栏和回复按钮,以及输入器(姓名、可选邮箱、Markdown 文本和心情)。
### 审核(Comments collection)

每条评论都会进入一个标准的 Payload collection,因此审核可以使用您熟悉的原生后台界面。列表就是您的审核队列 —— 展示作者、摘要、目标 collection、状态和日期 —— 并支持原生过滤和批量操作;批准待定评论后会立即发布。

打开评论会显示其完整记录 —— 作者和邮箱、心情、关联文档和嵌套的父评论、用于反垃圾的加盐 IP/指纹哈希值 —— 以及用于批准、标记为垃圾或将其移至回收站的状态选择器。
### 设置

**Comments Settings** global 可在运行时针对每个 collection 切换评论功能,并公开了 **Require approval** 开关,让您无需重新部署即可开启或关闭强制发布前审核。
### 统计

**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开发, 内容审核, 插件, 自动化攻击, 评论系统