完整配置示例
以下是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
页脚配置 (footer)
云端设置对 config.js 的覆盖关系
后台「博客设置」写入 D1site_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 后台创建广告单元- 登录 AdSense → 广告 → 按广告单元 → 新建 → 选择「展示广告」
- 生成代码后,记下其中的
data-ad-slot值(即广告位 ID):
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,避免主题闪动。
