Files
cwd/docs/config/site-isolation.md
anghunk a698734df5 docs: 更新文档以反映从域名到站点的术语变更
- 将“域名筛选”统一更新为“站点筛选”或“多站点管理”
- 更新管理后台API文档,明确支持通过siteId参数筛选数据
- 在站点隔离配置文档中新增管理后台API使用说明
- 更新数据统计文档,将按域名分类改为按站点分类
- 修正相关API参数说明,从domain参数改为siteId参数
2026-02-09 16:40:42 +08:00

127 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 站点隔离
CWD 评论系统支持通过 `siteId` 参数实现多站点数据隔离。当你需要为多个不同的网站或博客使用同一套评论系统后端时,可以通过 `siteId` 来区分不同站点的评论数据。
## 功能说明
- **数据隔离**:每个 `siteId` 对应独立的评论数据,不同站点的评论互不干扰
- **统一管理**:所有站点共用同一个后端 API 和管理后台,通过 siteId 进行区分
## 前端配置
在初始化评论组件时,通过 `siteId` 参数指定站点标识:
```html
<div id="comments"></div>
<script src="https://unpkg.com/cwd-widget@0.0.x/dist/cwd.js"></script>
<script>
const comments = new CWDComments({
el: '#comments',
apiBaseUrl: 'https://your-api.example.com',
siteId: 'blog', // 站点 ID例如blog, docs, forum
});
comments.mount();
</script>
```
### 参数说明
| 参数 | 类型 | 必填 | 说明 |
| --------- | ------ | ---- | -------------------------- |
| `siteId` | string | 否 | 站点标识符,用于隔离不同站点的评论数据 |
### siteId 命名建议
- 使用小写字母、数字和连字符,如 `blog``docs``my-site-1`
- 避免使用特殊字符和空格
- 建议使用有意义的名称,便于识别不同站点
## API 调用
### 公开 API
当使用站点隔离功能时,所有公开 API 请求都需要在查询参数中携带 `siteId`
```javascript
// 获取评论列表
GET /api/comments?post_slug=hello-world&siteId=blog
// 提交评论
POST /api/comments
{
"post_slug": "hello-world",
"name": "张三",
"email": "zhangsan@example.com",
"content": "很棒的文章!"
}
// 请求头X-Site-Id: blog
// 获取配置
GET /api/config/comments?siteId=blog
```
### 管理后台 API
管理后台同样支持通过 `siteId` 参数进行数据筛选:
```javascript
// 获取评论列表
GET /admin/comments/list?siteId=blog
// 导出评论数据
GET /admin/comments/export?siteId=blog
// 获取评论统计数据
GET /admin/stats/comments?siteId=blog
// 获取访问统计概览
GET /admin/analytics/overview?siteId=blog
// 获取页面访问统计
GET /admin/analytics/pages?siteId=blog
// 获取点赞统计数据
GET /admin/likes/stats?siteId=blog
// 导出统计数据
GET /admin/export/stats?siteId=blog
```
说明:
- 当提供 `siteId` 参数且不为 `default` 时,接口仅返回该站点下的数据
- 不提供 `siteId` 参数时,返回所有站点的数据
## 多站点示例
如果你有多个站点,可以为每个站点配置不同的 `siteId`
```html
<!-- 博客站点 -->
<div id="blog-comments"></div>
<script>
const blogComments = new CWDComments({
el: '#blog-comments',
apiBaseUrl: 'https://your-api.example.com',
siteId: 'blog',
});
blogComments.mount();
</script>
<!-- 文档站点 -->
<div id="docs-comments"></div>
<script>
const docsComments = new CWDComments({
el: '#docs-comments',
apiBaseUrl: 'https://your-api.example.com',
siteId: 'docs',
});
docsComments.mount();
</script>
```
## 注意事项
[为什么设置完 siteId 后,评论区不显示旧的评论数据?](/common-problems.html#_1-为什么设置完-siteid-后-评论区不显示旧的评论数据)