Skip to content

站点与品牌设置 ​

站名、Logo、主题色这些三端都可见的信息统一在管理端一个页面维护,保存后写入 settings 表并即时下发。本文说明每一项填什么、留空会怎样、改完怎么验证。

1. 后台入口 ​

页面路径页面权限读写接口权限
站点设置(基础信息)站点内容 → 站点配置 → 站点设置site.view读 settings.view,写 settings.manage
通知总开关同上页面「通知总开关」分区site.view同上
首页 Banner站点内容 → 站点配置 → 首页 Bannersite.view同上(首页装修走自己的接口)

站点设置页面的可见性看 site.view,但表单读的是 GET /api/v2/admin/settings、写的是 POST /api/v2/admin/settings,这两个接口分别要求 settings.view 与 settings.manage。只给了 site.view 的账号能进页面、点了保存会提示无权限——这不是页面故障,是权限没配全。系统里定义了 site.manage 这个权限常量,但当前没有任何路由使用它(未在代码中确认它的用途)。

2. 基础信息字段 ​

配置分组是 basic,键名即下面每项的行内代码。

字段默认值生效范围
site_name 站点名称图拉云官网、用户控制台、管理端、邮件
browser_title 浏览器标题空(回退站点名称)官网首屏、标签页、分享卡片
site_logo 站点 Logo空(回退 /branding/logo.png)官网、控制台导航
site_favicon 站点 Favicon空(回退 /branding/favicon-32.png)浏览器标签页图标
client_console_icon 用户控制台图标空(回退 Favicon)控制台侧边栏、登录页
brand_primary_color 品牌主色#165DFF(TDesign 品牌蓝)三端强调色
brand_radius 界面圆角6三端控件与容器圆角
product_display_mode 商品展示方式list(列表式)前台商品列表默认形态(访客可自行切换)
service_phone 官方 QQ 群空(回退文案「待补充群号」)官网页脚、控制台联系方式
service_email 合作邮箱空(该行不显示)官网页脚、控制台联系方式
service_hours 服务时间空(该行不显示)官网页脚、「关于我们」页
support_group_qr 官方群聊二维码空官网与控制台的联系入口
support_group_link 入群链接空同上
icp_record ICP 备案号空(页脚该行不显示)官网页脚
value_added_license 增值电信业务经营许可证空官网页脚
terms_url 服务条款链接空注册与下单页的服务条款入口
privacy_url 隐私政策链接空同上

品牌主色与圆角的取值有硬校验,填错不是「不好看」而是「静默回退默认值」:

  • brand_primary_color 只接受 #RRGGBB 或 #RGB,三位写法会展开成六位并转小写。带分号、花括号、逗号或 url() 的输入会让整条样式规则失效甚至成为注入点,系统直接回退 #165DFF。管理端表单本身也有 #(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6}) 的正则校验,但服务端不信任前端,落库前会再校验一次。
  • brand_radius 只接受 0–24 的整数像素,超过 24 回退 6。项目规范是容器取该值、控件取一半,即默认的 6px / 3px;填成 30 这类值会看到圆角忽然变小,那是回退,不是没保存。
  • service_qq_group 与 service_phone 是同一展示位的两个候选键,取值时先看 service_qq_group,为空再取 service_phone,都为空则显示占位文案「待补充群号」。官网页脚上那一行写着「待补充群号」就说明这里没填。

client_console_icon 只在用户控制台生效;官网顶栏与页脚用的是站点 Logo 加站点名称。图片字段接受的是媒体库上传后的地址,也可以直接填 /branding/ 下的静态文件名。

product_display_mode 只决定访客第一次打开选购页看到的形态。访客可以在选购页右上角切换「卡片式 / 列表式」(手机端同样有切换条),还可以在「页面宽度」面板里选固定宽度(1200 / 1280 / 1440 / 1600 / 1920)或撑满屏幕;两项偏好分别记在该浏览器的 localStorage(turaidc:shop-display-mode、turaidc:shop-page-width)里,换浏览器、换设备或清缓存后回到站点默认值。想确认站点默认值实际生效,请用无痕窗口打开选购页,或先清掉这两个键。

3. 通知总开关 ​

同一页面「通知总开关」分区属于 notification 分组:

  • email_enabled 启用邮件通知,默认关闭。
  • sms_enabled 启用短信通知,默认关闭。

这两个开关是「对外是否真的会发信」的唯一判定源。关闭时注册验证码、找回密码等对外发码会直接返回「邮件服务暂不可用」,而管理端插件详情页的「发送测试邮件 / 发送测试短信」按钮走驱动直发、不受总开关约束——测试成功不代表对外可用,测试结果里会额外回传总开关状态并提示这一点。通道本身的配置见邮件与短信。

4. 保存后多久生效 ​

  • 读取接口 GET /api/v2/site/config 不缓存,刷新官网或控制台即可看到新站名。
  • 保存 basic 分组会触发内容版本号自增,官网的 SEO 渲染结果与 sitemap 缓存立即失效,不需要等 TTL 过期,也不用手动清缓存。
  • 浏览器标签页图标与标题由首屏脚本按上次访问留下的 localStorage 缓存先渲染一次,再被接口结果覆盖。同一个标签页里改名不会立刻改标题,新开标签页就正常。
  • 官网上静态引用的图片(例如直接写在 Nginx 里的 favicon)可能被 CDN 或浏览器缓存,这部分策略见前端站点 Nginx 规则。

5. 验证 ​

用接口确认服务端的真实取值,不要只看页面回显(页面回显带表单本地状态):

bash
curl -s https://你的官网域名/api/v2/site/config | head -c 800

返回里的 site_name、browser_title、site_logo、site_favicon、brand_primary_color、brand_radius 就是三端实际使用的值。随后逐项人工确认:

  1. 新开浏览器标签页打开官网,标签页标题与图标已是新品牌。
  2. 刷新官网首页与用户控制台,站点名与主色已变;管理端刷新后主色同步。
  3. 官网页脚的备案号、服务时间、合作邮箱按填写内容显示,留空的整行不出现。
  4. 用无痕窗口打开选购页,商品列表按 product_display_mode 的取值呈现为列表式或卡片式;普通窗口里访客的切换偏好会覆盖默认值,这是预期行为。

改完没有任何变化时,按顺序排查:账号是否有 settings.manage(保存本身被拒)、brand_primary_color / brand_radius 是否被服务端校验回退、浏览器是否拿着旧的标签页缓存。

关联文档 ​

  • 初始配置:四步配置的顺序与上线检查清单。
  • 邮件与短信:通知通道配置,站点设置里的通知总开关要配合它才有意义。
  • 部署与调度:settings 表缓存写在 Redis,缓存组件异常时会回退默认配置。
  • 工程踩坑记录:配置类改动容易踩的实测坑。

基于 AGPL-3.0-or-later 发布