后台管理总览
GoPress 的后台 CMS 完全数据驱动。核心内容类型由引擎注册,主题自定义内容类型由 theme.toml 声明;进入后台时会按当前注册表自动生成对应的列表/编辑/创建页面。
核心特性
- 数据驱动 — 后台界面根据
ContentType注册表动态生成,无需手写 CRUD 页面;侧边栏名称与图标来自ContentTypeDef/theme.toml - RBAC 权限控制 — 所有后台页面均经过
checkPermission检查(媒体/缓存/重定向/插件管理等) - 角色体系 — 超级管理员 / 编辑 / 作者 / 投稿者 / 订阅者,超级管理员
*.*通配 - 审计日志 — 记录所有后台操作(用户/动作/资源/IP)
内容管理
- 统一编辑界面 — 所有内容类型共用同一套列表/编辑/创建模板,支持 Meta 字段自动渲染
- 显示选项与分页 — 内容列表右上角提供 WordPress 风格「显示选项」面板;表头列选项根据当前内容类型实际列动态生成,包括核心字段、Meta 字段和已挂载 taxonomy。每页项目数会随页面 key 保存,并用于服务端分页
- 基础筛选与标题搜索 — 内容列表支持按标题搜索、按月份筛选和按当前内容类型挂载的 taxonomy 筛选。分页、搜索、语言 Tab、日期和分类筛选会共同作用于同一组服务端查询,因此总数和页码与实际结果一致
- 富文本编辑器 — 集成 Quill 2.0 编辑器,支持图片上传、格式化排版,编辑区右下角可拖拽纵向缩放
- 媒体选择器 — 模态窗口浏览/搜索/上传图片,一键插入
- 内容列表过滤 Tab(可扩展) — 列表上方 Tab 条由
admin.HookContentListTabsfilter 动态生成,core 只定义抽象(ContentListTab数据结构 + hook 名),插件按需注入。多语言插件启用时自动出现「全部 / 🇬🇧 English / 🇨🇳 中文」等按语言分组 Tab,带计数徽章;插件停用后 Tab 自动消失,列表回退单语言视图 - 内容列表拖拽排序 — 只要
ContentType.Supports含"sort_order",列表首列出现拖拽柄(⋮⋮),鼠标拖行后自动POST /admin/{slug}/reorder重写sort_order列、就地更新序号 + 右下角 toast 反馈。与语言 Tab 天然解耦:在某语言 Tab 下拖动只影响该语言的内容行,其它语言sort_order完全独立 - 分类管理 — 分类和标签的增删改查;主题内容类型通过
theme.toml挂载后自动出现在对应编辑界面
系统管理
- 主题管理 — 在后台切换主题,实时生效(自动重建路由)
- 插件管理 — 激活/停用插件(状态持久化,启停自动刷新前台缓存,支持运行时完全热拔插,无需重启服务)
- 菜单管理 — 创建/编辑/删除菜单,分配显示位置(header/footer),拖拽排序菜单项,支持嵌套子菜单。详见 菜单管理
- 缓存管理 — 查看缓存状态,一键清除
- 重定向管理 — 管理 301/302 规则
- 媒体库 — 上传和管理文件,支持一键重建历史图片的响应式变体
- 邮件设置 — 配置 SMTP 传输、选择 go-mail 或 Go 标准库驱动、发送测试邮件、控制新联系留言通知;SMTP 密钥写入当前站点
config.toml的mail.mail_key,后台不回显真实值 - 用户管理 — 创建用户、分配角色
站点设置
后台「系统设置」里的「网站设置」区域是 GoPress 的"WordPress 常规设置"等价物,提供:
- 网站名称 (
site_name) — 全主题统一来源,控制浏览器<title>拼接 - 网站简介 (
site_description) — 全主题统一的<meta description>默认值 - 网站图标 (
site_icon) — 全主题统一的 favicon / Apple touch icon 来源,建议上传方形 PNG(至少 48×48,推荐 512×512) - 站点语言 (
site_language) — 默认 i18n fallback 语言 - 站点时区 (
site_timezone) — 后台发布时间输入、内容列表发布时间展示、主题日期 helper 的统一时区来源。文章发布时间会按该时区解析并以 UTC 存储,避免编辑时被服务器时区或浏览器时区反复偏移 - 当前主题 — 显示活跃主题;切换在「主题管理」页
- 演示数据导入状态 — 系统维护,无需手动改
修改后立即生效,整页缓存自动失效。详见 URL 与 SEO 和 主题 SEO 接入规范。
邮件设置
后台「邮件设置」是独立系统页,不混入普通 options 表单。SMTP 传输配置保存在站点级 config.toml 的 [mail] 段,通知开关和收件人偏好保存在 options。默认发信驱动是 go-mail,也保留 stdlib Go 标准库分支。
- SMTP 总开关 — 关闭时不投递邮件,但通知规则保留
- SMTP 密钥 —
mail.mail_key只写入配置文件;后台只显示“已设置”占位,留空表示保留,勾选清除才会删除 - Gmail 配置 — 使用
smtp.gmail.com、587、STARTTLS,SMTP 用户名和发件人邮箱都填 Gmail 地址,SMTP 密钥填 Google App Password - 测试邮件 — 使用当前已保存配置发送,便于上线前确认主机、端口、加密方式和发件人是否正确
- 联系留言通知 — 当前默认规则是
contact_message创建后异步通知管理员邮箱;失败只写日志,不影响留言保存
扩展性
后台不是封闭面板——core 提供了一系列扩展点(filter / action hook)让插件向后台注入功能:
- 内容列表过滤 Tab
- 内容编辑页永久链接前缀
- 内容编辑页自定义 meta box
- 内容保存后的副作用 hook
- 插件设置页(自带模板、自带数据、自带保存回调)
详见 后台扩展点。
