uni-CMS 内容管理模块:服务端配置与权限管理
uni-CMS 是 uni-cloud 官方提供的内容管理模块,集成了完整的文章编辑、前端渲染、富文本编辑器、付费内容、广告解锁和 AI 文章生成等功能。本节详解 uni-CMS 在 uni-admin 中的安装、配置、媒体库集成以及多作者权限管理。
uni-CMS 功能概览
| 功能模块 | 说明 |
|---|---|
| 文章管理 | 完整的增删改查,包含富文本编辑器 |
| 分类管理 | 文章分类的层级管理 |
| 媒体库 | 统一管理图片、视频等媒体资源 |
| AI 文章生成 | 集成 uni-ai,支持 AI 辅助写作 |
| 付费内容 | 内容付费解锁 |
| 广告解锁 | 通过观看广告解锁内容 |
| 推送功能 | 集成 uni-push 消息推送 |
| 多作者 | 支持多作者登录和权限管理 |
安装 uni-CMS(admin 端)
安装步骤
- 访问官方插件市场,找到 uni-CMS 插件
- 点击"下载插件并导入 HBuilderX"
- 选择目标项目(uni-admin)
- 等待下载完成
- 合并代码(重点关注 pages.json 和 database 目录的变化)
安装后的目录结构
uni-admin/
├── uni_modules/
│ └── uni-cms/
│ ├── pages/
│ │ ├── article/
│ │ │ ├── list.vue # 文章列表
│ │ │ ├── add.vue # 新增文章
│ │ │ └── edit.vue # 编辑文章
│ │ └── categories/
│ │ └── list.vue # 分类管理
│ ├── components/
│ │ └── editor/ # 富文本编辑器
│ └── menu.json # 待添加菜单配置
text
菜单配置
uni-CMS 模块自带 menu.json 文件,包含所有需要添加的菜单项。可以直接在 admin 页面中选中待添加菜单一键导入。也可以手动添加子菜单到"内容管理"下。
媒体库(uni-media-library)
媒体库需要单独的 Schema 支持。如果提示缺少 uni-media-library.schema.json,需要:
- 从 uni-admin 项目的 database 中找到该 Schema
- 上传到云端并初始化
- 同步 cloud functions
富文本编辑器
uni-CMS 内置的富文本编辑器支持:
- 文本格式化(加粗、斜体、标题等)
- 图片插入
- AI 辅助写作(需开通 uni-ai)
AI 写作功能
编辑器集成了 AI 功能,通过 uni-cloud 官方的 AI 接口作为统一网关,购买 uni-cloud tokens 后可使用 AI 生成文章内容。如不使用此功能,需要在组件中注释掉相关代码(ai-chat.vue 中的 AI 调用部分)。
多作者权限管理
方式一:内部作者(角色权限)
适用于作者是内部员工或可控的兼职人员:
- 在 uni-admin 中注册作者账户
- 在系统管理 → 角色管理中新建角色:
uni-cms-author - 在用户管理中给已注册用户赋予作者角色
- 角色权限在
db_init.json中定义,包含 articles 表的 read/create/update/delete 权限
方式二:外部作者(独立作者端)
适用于外部自媒体作者:
- CMS 没有独立提供作者端,需要开发者自行创建新项目
- 将 CMS 系统分为三个端:管理端、读者端、作者端
- 作者端项目需要独立开发,只开放内容创建和管理权限
权限配置(Schema 层面)
文章表的权限在 Schema 中定义:
{
"permission": {
"read": true,
"create": "uni-cms-author",
"update": "doc.user_id == auth.uid",
"delete": "uni-cms-author"
}
}
json
角色的具体权限定义在 db_init.json 中:
{
"uni-cms-author": {
"permission": {
"uni-cms-articles": {
"read": true,
"create": true,
"update": true,
"delete": true
}
}
}
}
json
初始化数据库时,如果权限未生效,需要重新初始化 db_init.json(右键 → 初始化云数据库 → 选择覆盖)。
Schema 扩展公共模块
管理页面可能依赖公共模块进行数据转换。例如 quill-delta-to-html 用于将富文本编辑器的 Delta 格式转换为 HTML。
配置方式
- 在 database 目录上右键 → 配置 schema 扩展 JS 的公共模块或扩展库
- 勾选需要的模块(如
quill-delta-to-html) - 确定后
database/package.json中会添加对应依赖
验证
配置完成后刷新管理页面,确认不再报"公共模块不存在"的错误。公共模块的转换逻辑位于 uni_modules/uni-cms/cloud-functions/common/ 目录下。
云空间同步最佳实践
使用 uni-cloud 开发时,经常需要处理本地与远端的 Schema 和 Cloud Functions 同步问题:
| 操作 | 触发方式 | 说明 |
|---|---|---|
| 上传 Schema | 右键 database → 上传 | 将本地 Schema 同步到云端 |
| 下载 Schema | 右键 database → 下载 | 将云端 Schema 同步到本地 |
| 上传 Cloud Functions | 右键 cloud-functions → 上传 | 部署云函数 |
| 初始化数据库 | 右键 → 初始化云数据库 | 初始化权限和索引 |
核心建议:每天开始开发新模块前,先下载远端 Schema 做一次合并操作,避免多人协作时的数据冲突。
↑