Skip to main content

完整配置示例

以下是 public/config.js 出厂状态的等价写法(真实默认值):

基础配置

mode

apiBase

后端 API 基础地址。
  • 留空(默认):同源请求
  • 填写 URL:如 https://www.2024921.xyz(跨域时后端需已配 CORS;SITE_URL 未配置或与来源不匹配时,后端不回 CORS 头)

siteUrl

站点对外地址,用于生成 RSS / Sitemap 链接与 canonical。例:https://www.2024921.xyz(不带末尾斜杠)。留空时前端回退为当前页面来源。

writeToken

可选。旧版静态写入令牌,对应后端环境变量 BLOG_WRITE_TOKEN。现已推荐改用会话登录(/api/admin/login 返回 7 天 token),普通用户无需填写。

pageSize

首页每页显示文章数,默认 5。
  • 设为 0:不分页,全部显示
  • 非数字(或负数)会回退为 8:getConfig() 只在 typeof pageSize === 'number' && pageSize >= 0 时采用配置值

adminPwd

云端模式下,后台「博客设置」保存到 D1 site_settings 的内容会覆盖 config.js 里的对应项(见下节)。改完不生效时,请先检查后台设置,而不是只改配置文件。

云端设置对 config.js 的覆盖关系

后台「博客设置」写入 D1 site_settings(键值对),前端 getConfig() 在运行时合并,优先级高于 config.js:

功能开关(features)

后台「设置 → 功能开关」把原本只能改 config.js 或代码的开关搬到网页端,保存到 D1 site_settings.features: 这些值在运行时合并,优先级高于 config.js。相关接口见站点设置与功能开关。

广告配置 (ads)

广告位填写方式:belowSearch / between / content 填入 AdSense 生成的广告单元完整代码(形如 <ins class="adsbygoogle" ...></ins><script>(adsbygoogle=window.adsbygoogle||[]).push({})</script>)。库脚本已由 client 自动加载,广告位代码里只需 <ins> + push 即可,不要再重复引入 adsbygoogle.js。未启用(enabled: false)时不加载任何第三方脚本。

自动广告设置示例

本项目的广告采用「广告单元 + 自动插位」模式:你在 config 里把广告单元代码放进几个广告槽,系统会自动在这些位置渲染(无需手动指定每一处)。这是 SPA(前端 JS 渲染)博客最稳定可靠的方案。 第 1 步:AdSense 后台创建广告单元
  1. 登录 AdSense → 广告 → 按广告单元 → 新建 → 选择「展示广告」
  2. 生成代码后,记下其中的 data-ad-slot 值(即广告位 ID):
第 2 步:填入 config.js 的 ads
把三处的 1234567890 换成你自己的 data-ad-slot,三个位置可共用同一 slot,也可创建不同单元区分。 广告自动出现的位置
  • belowSearch → 首页搜索框下方
  • between → 首页列表每 betweenEvery 篇自动插入一个(如 betweenEvery: 3 = 每 3 篇插一个,无需手动指定位置)
  • content → 文章详情底部
注意事项
  • enabled 必须为 true 且 client 非空,广告脚本才会加载。
  • 广告位代码里只放 <ins> + push({}),不要再贴 adsbygoogle.js 库脚本 —— 它已由 client 字段自动注入 <head>。
  • 想只在文章底部放广告:把 belowSearch / between 留空、content 填代码即可;想调列表广告密度改 betweenEvery。

主题与外观

深色/浅色与强调色是两个正交维度,都存浏览器本地: public/index.html 会在首屏渲染前读取 qingyu.theme 与 qingyu.accent 写入 data-theme / data-accent,避免主题闪动。

路由

所有路由为真实路径,无 hash: