文章页配置
本页讲解文章页的配置:头图、标题下方元信息(日期/字数/阅读时长/阅读数)、TOC 目录、评论、打赏、版权、公式与流程图。全部在主题配置的 post 段内。
主题配置以
userConfig/_config.tmp.yml为权威源(CI 时覆盖主题配置)。阅读方式:每节都按「如何启用 → 常用选项 → 全部可调项 → 边界与冲突」展开,先看效果,再看产生该效果的对应配置,复制即可用。
显示与布局
1. 文章页头图
用途:文章页顶部 Banner(区别于首页头图,可单独设置)。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
1.1 如何启用
效果:打开任意文章,页面顶部出现整宽头图,高度占视口的 70%,图上叠一层 30% 黑色蒙版以提升白色标题的对比度。
对应配置(主题配置,post 段):
post:
banner_img: /img/default.png # 文章页头图
banner_img_height: 70 # 头图高度(屏幕百分比,0-100)
banner_mask_alpha: 0.3 # 黑色蒙版不透明度(0-1)1.2 常用选项
① 单篇换头图
效果:只有该篇文章的顶部换成指定图片,其他文章仍用全局头图。
对应配置(文章 front-matter):
banner_img: /medias_webp/banner/1.webp② 调头图高度
效果:数值越大头图越高、标题下移越多;70 约占七成视口,40 只留一条横幅。
对应配置:
post:
banner_img_height: 40③ 调蒙版深浅
效果:0 完全不压暗(浅色图上白字可能看不清),0.5 明显压暗,1 全黑。
对应配置:
post:
banner_mask_alpha: 0.5④ 无 front-matter 图片时自动取图
效果:文章没写 img 时,按标题 hash 从 featureImages 数组中固定取一张,同一标题每次都拿到同一张图。
对应配置(主题配置,顶层 featureImages):
featureImages:
- /medias_webp/featureimages/0.webp
- /medias_webp/featureimages/1.webp1.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.banner_img | string | — | 图片路径或完整 URL | 文章页全局头图 |
post.banner_img_height | number | — | 0–100(视口百分比) | 头图高度 |
post.banner_mask_alpha | number | — | 0–1 | 黑色蒙版不透明度 |
front-matter banner_img | string | 继承全局 | 图片路径 | 单篇覆盖头图 |
front-matter img | string | — | 图片路径 | 显式指定头图(优先级最高) |
featureImages | array | — | 图片路径数组 | 无 img 时的自动取图池 |
background.image.random | bool | — | true / false | 开启随机背景时不显示文章 banner |
1.4 边界与冲突
头图来源优先级(_partial/post/post-cover 渲染逻辑):
- front-matter
img(如img: /medias_webp/xxx.webp)——显式指定 - 无
img时按标题 hash 从theme.featureImages数组取一张(/medias_webp/featureimages/0-44.webp,同一标题恒定同一张) - 开启随机背景(
theme.background.image.random)时不显示文章 banner
注意:
featureImages唯一图源为medias_webp/featureimages/(webp,编号 0-44,含dark/子目录);旧版medias/featureimages/(jpg)已废弃删除,不要引用.jpg路径。
1.5 小结
- 最小可用:只写
banner_img一项,头图即可出现 - 想突出标题:加大
banner_mask_alpha,或降低banner_img_height - 单篇特殊化:在 front-matter 写
img/banner_img,不动全局 - 改了不生效:头图路径属于资源变更,需 clean 构建
2. 元信息(meta)
用途:文章标题下方的一行信息:日期、字数、阅读时长、阅读数,可独立启停。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
2.1 如何启用
效果:文章标题正下方出现一行灰色小字,例如「2026-08-07 · 2,345 字 · 8 分钟 · 123 次阅读」。只开日期与字数时,这一行只剩「日期 · 字数」。
对应配置(主题配置,post.meta 段):
post:
meta:
date:
enable: true
format: "LL a"
wordcount:
enable: true2.2 常用选项
① 日期与格式
效果:显示文章日期。"LL a" 输出「2026年8月7日 周五」这类本地化格式。
对应配置:
post:
meta:
date:
enable: true
format: "LL a"② 字数统计
效果:标题下出现「N 字」,中文按字符计。
对应配置:
post:
meta:
wordcount:
enable: true③ 阅读时长
效果:出现「N 分钟」估算。wpm 越大估得越短;awl 是每词平均长度系数,中文保持 1。
对应配置:
post:
meta:
min2read:
enable: true
awl: 1 # 中文 1 字 = 1 字符
wpm: 300 # 中文技术文章建议 250-350④ 浏览量
效果:出现「N 次阅读」。数字来源由 source 决定,切换数据源只改这一个值。
对应配置:
post:
meta:
views:
enable: true
source: "umami" # busuanzi | leancloud | umami | waline⑤ 作者
效果:标题下出现作者名。默认关闭;打开后优先取 front-matter author,没有则取站点 author。
对应配置:
post:
meta:
author:
enable: true2.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.meta.author.enable | bool | false | true / false | 显示作者 |
post.meta.date.enable | bool | true | true / false | 显示日期 |
post.meta.date.format | string | "LL a" | ISO-8601 / dayjs 格式串 | 日期格式 |
post.meta.wordcount.enable | bool | true | true / false | 字数统计 |
post.meta.min2read.enable | bool | true | true / false | 阅读时长 |
post.meta.min2read.awl | number | 1 | 正数 | 每字词平均长度(等效系数) |
post.meta.min2read.wpm | number | 300 | 正数 | 每分钟阅读字数 |
post.meta.views.enable | bool | true | true / false | 浏览量 |
post.meta.views.source | string | "umami" | busuanzi / leancloud / umami / waline | 浏览量数据源 |
2.4 边界与冲突
post.meta.views.source决定浏览量从哪来——本博客用 umami(自建统计),也可换不蒜子(busuanzi,零配置)或 Waline 评论的浏览量。- 选
leancloud时还需要 §21 的leancloud_visitors配置;选waline时需要waline.pageview: true。 post.meta与 §11postInfo是两套独立机制,同时开启会在页面上出现两处信息,按需只留一套。
2.5 小结
- 最小可用:
date.enable+wordcount.enable - 想少请求:浏览量统一用
umami,不要同时开leancloud_visitors - 阅读时长不准:调
wpm(中文 250–350) - 别和
postInfo重复开:先确认页面信息栏是否已显示
3. 更新时间提示(updated)
用途:在文章开头显示"最后更新于 X",默认取 md 文件更新时间,可用 front-matter
updated手动指定。学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
3.1 如何启用
效果:文章正文开头出现一条提示条「最后更新于 2026年8月7日 周五」。默认关闭,改 enable: true 后出现。
对应配置(主题配置):
post:
updated:
enable: true
date_format: "LL a"3.2 常用选项
① 相对时间
效果:relative: true 时提示条显示「3 天前」而不是具体日期,旧文更好读。
对应配置:
post:
updated:
relative: true② 提示条样式
效果:提示条换成对应主题色(info 蓝、success 绿、warning 黄、danger 红等)。
对应配置:
post:
updated:
note_class: warning③ 手动指定更新时间
效果:该篇显示 front-matter 里的日期,而不是文件修改时间;适合内容没改但想标注修订日。
对应配置(文章 front-matter):
updated: 2026-09-01 10:00:003.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.updated.enable | bool | false | true / false | 显示更新时间提示 |
post.updated.date_format | string | "LL a" | ISO-8601 / dayjs 格式串 | 日期格式 |
post.updated.relative | bool | false | true / false | 显示相对时间(“3 天前”) |
post.updated.note_class | string | info | default / primary / info / success / warning / danger / light | 提示条样式 |
3.4 边界与冲突
- 默认取 md 文件更新时间;写了 front-matter
updated则以它为准。 note_class依赖主题的 note 样式,填未知值会回落默认样式(其他值未验证)。
3.5 小结
- 最小可用:只开
enable - 旧文友好:
relative: true - 想显眼:
note_class: warning - 单篇指定:front-matter
updated
4. TOC 目录
用途:文章侧边栏章节导航,滚动时高亮当前章节,可折叠。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
4.1 如何启用
效果:文章页侧边栏出现目录树,滚动正文时对应条目高亮;点击条目跳到该章节。
对应配置(主题配置,顶层 toc 段):
toc:
enable: true4.2 常用选项
① 参与目录的标题级别
效果:默认 h2–h6 都进目录;改成 "h2,h3" 后只显示两级,目录更短。
对应配置:
toc:
headingSelector: "h2,h3"② 折叠深度
效果:0 时全部折叠,只看到顶层条目;大于 0 且有下级的条目默认展开。
对应配置:
toc:
collapseDepth: 2③ 单篇关闭
效果:该篇文章不显示目录,其他文章不受影响。
对应配置(文章 front-matter):
toc: false4.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
toc.enable | bool | true | true / false | 全局目录开关 |
toc.headingSelector | string | "h2,h3,h4,h5,h6" | CSS 选择器串 | 参与目录的标题级别 |
toc.collapseDepth | number | 0 | 0 或正整数 | 折叠深度 |
front-matter toc | bool | 继承全局 | true / false | 单篇开关 |
4.4 边界与冲突
collapseDepth为0表示全部折叠;>0时有下级的条目默认展开。- 标题必须用 Markdown
##/###生成,目录才抓得到;HTML 手写标题需要对应 class/选择器。 - 单篇
toc: false只隐藏目录,不影响正文标题渲染。
4.5 小结
- 最小可用:
toc.enable: true - 目录太长:收窄
headingSelector - 想要展开态:
collapseDepth: 2 - 单篇不要目录:front-matter
toc: false
互动与版权
5. 评论(comments)
用途:全站评论系统开关与引擎选择。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
5.1 如何启用
效果:文章正文末尾出现评论区(Waline 的输入框 + 评论列表);未选引擎或未填服务地址时,评论区为空或报错。
对应配置(主题配置,post.comments 段):
post:
comments:
enable: true
type: waline # 引擎:utterances | disqus | gitalk | gitment | valine | waline | changyan | livere | remark42 | twikoo | cusdis | giscus | discuss还需要所选引擎的必要参数(Waline 见 §5.1.1)。
5.2 常用选项
① 换评论引擎
效果:评论区换成另一种服务(如 GitHub Discussions 的 giscus),外观与登录方式随之改变。
对应配置:
post:
comments:
type: giscus② 页面级开关
效果:该页面不显示评论区(独立页、留言页、友链页同理)。
对应配置(页面 front-matter):
comments: false③ Waline 服务地址
效果:评论真正能读写。未填 serverURL 时 Waline 初始化失败、评论区空白。
对应配置:
waline:
enable: true
serverURL: 'https://waline.17lai.site'④ 头像与界面语言
效果:评论者头像样式与界面文案语言变化(avatar: 'hide' 则不显示头像)。
对应配置:
waline:
avatar: 'mp'
lang: zh-CN⑤ 暗色适配
效果:切到暗色模式时 Waline 自动跟随变暗;选择器写错则评论区仍是亮色。
对应配置:
waline:
dark: 'html[data-user-color-scheme="dark"]'⑥ 浏览量 / 评论数统计
效果:评论区顶部或文章信息处出现阅读数与评论数。需与 post.meta.views.source: waline、postInfo.commentCount 配合。
对应配置:
waline:
pageview: true
comment: true⑦ 自定义表情回应
效果:文章底部出现一排表情按钮,读者可点选回应。
对应配置:
waline:
reaction: |
[
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_agree.png'
]⑧ 图片上传
效果:false 时评论框没有上传按钮;开启后图片以 Base64 嵌入。
对应配置:
waline:
imageUploader: false5.2.1 各评论引擎配置
Waline(本博客主用,详细):
waline:
enable: true
serverURL: 'https://waline.17lai.site' # Waline 服务地址(自建,必填)
avatar: 'mp' # 头像样式:''/mp/identicon/monsterid/wavatar/retro/hide
lang: zh-CN # 界面语言
dark: 'html[data-user-color-scheme="dark"]' # 暗色模式适配选择器
login: enable # 登录模式:enable | force
wordLimit: 1000 # 评论字数限制(0 不限制)
pageSize: 10 # 每页评论数
pageview: false # 文章浏览量统计 v2(配合 post.meta.views.source: waline)
comment: true # 评论数统计 v2(配合 postInfo.commentCount)
reaction: | # 文章表情回应(自定义表情 URL 数组,与 _config.tmp.yml 一致)
[
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_agree.png',
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_look_down.png',
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_sunglasses.png',
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_pick_nose.png',
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_awkward.png',
'https://testingcf.jsdelivr.net/npm/@waline/emojis/tieba/tieba_sleep.png'
]
search: false # 表情包搜索(默认 giphy 提供)
imageUploader: false # 图片上传(false 禁用,默认行为是 Base64 嵌入)
meta: "['nick', 'mail', 'link']" # 评论者可填字段
requiredMeta: "['nick', 'mail']" # 评论者必填字段
recaptchaV3Key: '' # reCAPTCHA v3 密钥(防垃圾,可选)
highlight:
enable: false # 禁用 Waline 内置高亮
custom_highlighter: | # 自定义高亮函数(waline.ejs 读取 highlight.custom_highlighter)
(code, lang) => { /* 用 Prism 高亮 */ }以上为
waline.ejs实际读取的键(serverURL/avatar/lang/dark/login/wordLimit/pageSize/pageview/comment/reaction/search/imageUploader/meta/requiredMeta/recaptchaV3Key/highlight.custom_highlighter)。Valine 专有键(enableQQ/recordIP/requiredFields/guest_info/count/visitor)waline.ejs 不读取,配置无效。
其他引擎(精简配置):
| 引擎 | 配置键 | 必要参数 | 说明 |
|---|---|---|---|
| Valine | valine | appId/appKey/serverURLs(专有键 enableQQ/recordIP/requiredFields/guest_info/count/visitor) | 旧版评论(Waline 前身),参数与 Waline 同源,需 LeanCloud 凭据;推荐用 Waline |
| Gitalk | gitalk | owner/repo/oauth.clientId/oauth.clientSecret/admin | 基于 GitHub Issues;OAuth App 权限过高,官方不推荐 |
| Gitment | gitment | owner/repo/oauth.clientId/oauth.clientSecret | 基于 GitHub Issues;同 Gitalk 的安全问题(见 §13) |
| Disqus | disqus | shortname | 国外主流评论服务,国内访问不稳定 |
| Livere | livere | uid | 来必力(韩国),国内可用 |
| Changyan | changyan | appId/conf | 畅言(搜狐),需网站备案 |
| Twikoo | twikoo | envId(可选 region/path) | 腾讯云开发部署,教程见 twikoo.js.org |
| Cusdis | cusdis | host/app_id/lang | 第三方或自托管,见 cusdis.com |
| Giscus | giscus | repo/repo-id/category/category-id(可选 mapping/theme-light/theme-dark/lang) | 基于 GitHub Discussions,见 giscus.app |
| Remark42 | remark42 | host/site_id(可选 max_shown_comments/locale/components) | 需自托管服务端,见 remark42.com |
| Discuss | discuss | serverURLs/path | 自托管、多平台多数据库,见 discuss.js.org |
| Utterances | utterances | repo/label(可选 issue_term/theme/theme_dark) | 基于 GitHub Issues 的轻量评论,需 GitHub 仓库,见 utteranc.es |
切换引擎三步:①
post.comments.type改为目标引擎;② 填好上表对应配置键的必要参数;③hexo clean && hexo generate重新构建。GitHub 系引擎(Gitalk/Gitment)注意 OAuth 权限风险,建议优先 utterances/giscus 这类仅限单仓库的方案。
5.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.comments.enable | bool | true | true / false | 全站评论开关 |
post.comments.type | string | waline | 见上表 13 个引擎 | 评论引擎 |
waline.enable | bool | true | true / false | Waline 开关 |
waline.serverURL | string | — | 服务地址 URL | Waline 服务端(必填) |
waline.avatar | string | 'mp' | ''/mp/identicon/monsterid/wavatar/retro/hide | 头像样式 |
waline.lang | string | zh-CN | 语言代码 | 界面语言 |
waline.dark | string | — | CSS 选择器 | 暗色模式适配 |
waline.login | string | enable | enable / force | 登录模式 |
waline.wordLimit | number | 1000 | 0(不限)/ 正整数 | 评论字数上限 |
waline.pageSize | number | 10 | 正整数 | 每页评论数 |
waline.pageview | bool | false | true / false | 浏览量统计 v2 |
waline.comment | bool | true | true / false | 评论数统计 v2 |
waline.reaction | string | — | 表情 URL 数组 | 表情回应 |
waline.search | bool | false | true / false | 表情包搜索 |
waline.imageUploader | bool | false | true / false | 图片上传 |
waline.meta | string | "['nick', 'mail', 'link']" | 字段数组字符串 | 可填字段 |
waline.requiredMeta | string | "['nick', 'mail']" | 字段数组字符串 | 必填字段 |
waline.recaptchaV3Key | string | '' | reCAPTCHA v3 密钥 | 防垃圾 |
waline.highlight.enable | bool | false | true / false | Waline 内置高亮 |
waline.highlight.custom_highlighter | string | — | JS 函数串 | 自定义高亮 |
front-matter comments | bool | 继承全局 | true / false | 页面级开关 |
5.4 边界与冲突
type指向哪个引擎,就需要同时配置该插件的必要参数(如本博客的waline.serverURL)。页面级开关用 front-mattercomments: true/false(独立页/留言页/友链页同理)。- Valine 专有键在 Waline 下不生效(
waline.ejs不读取)。 - §16
minWalineCommentCount默认关闭,因为它与waline.comment重复请求评论数。 - Gitalk/Gitment 的 OAuth 权限过大,仅建议 utterances/giscus。
5.5 小结
- 最小可用:
comments.enable+type: waline+waline.serverURL - 想换 GitHub 评论:
giscus,填 4 个 id - 暗色不对:检查
waline.dark选择器 - 单页不要评论:front-matter
comments: false
6. 打赏(reward)
用途:文章末尾的打赏卡片,展示微信/支付宝收款码。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
6.1 如何启用
效果:文章正文结束后出现打赏卡片:一句标题,下方并排两张收款码(微信、支付宝),点击可放大查看。
对应配置(主题配置):
post:
reward:
enable: true
title: 码字辛苦,打赏作者!
wechat: /medias_webp/reward/wechat.webp
alipay: /medias_webp/reward/alipay.webp6.2 常用选项
① 改文案
效果:卡片标题文字变化,收款码不变。
对应配置:
post:
reward:
title: 请我喝杯咖啡② 换收款码
效果:对应渠道的二维码图片换成你自己的;支持填完整 URL 用网络图。
对应配置:
post:
reward:
wechat: https://example.com/wechat.png
alipay: /medias_webp/reward/alipay.webp③ 关闭打赏
效果:文末不再出现打赏卡片。
对应配置:
post:
reward:
enable: false6.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.reward.enable | bool | true | true / false | 显示打赏卡片 |
post.reward.title | string | — | 任意字符串 | 卡片标题 |
post.reward.wechat | string | — | 本地路径或 URL | 微信收款码 |
post.reward.alipay | string | — | 本地路径或 URL | 支付宝收款码 |
6.4 边界与冲突
- 收款码图片替换成自己的即可;支持网络图片(填完整 URL)。
- 两个渠道图片都缺失时卡片会出现空位,建议至少保留一张。
6.5 小结
- 最小可用:
enable+ 两张图 - 换自己的码:只改
wechat/alipay - 不想露码:
enable: false
7. 版权声明(copyright)
用途:文章底部版权卡片:作者、原文链接与转载许可协议。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
7.1 如何启用
效果:文章底部出现版权卡片,列出作者、原文链接与「署名-非商业性使用-相同方式共享」等协议名称。
对应配置(主题配置):
post:
copyright:
enable: true
license: 'cc_by_nc_sa'7.2 常用选项
① 换全站默认协议
效果:所有文章的版权卡片显示新协议名称与链接。
对应配置:
post:
copyright:
license: 'cc_by_nc'② 单篇覆盖协议
效果:只有该篇显示 cc_by_nc,其余文章仍用全局协议。
对应配置(文章 front-matter):
reprintPolicy: cc_by_nc③ 关闭版权卡片
效果:文末版权卡片消失。
对应配置:
post:
copyright:
enable: false7.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.copyright.enable | bool | true | true / false | 显示版权卡片 |
post.copyright.license | string | 'cc_by_nc_sa' | cc_by / cc_by_nd / cc_by_sa / cc_by_nc / cc_by_nc_nd / cc_by_nc_sa | 全站默认协议 |
front-matter reprintPolicy | string | 继承全局 | 同上 6 个值 | 单篇覆盖协议 |
可用规则:cc_by、cc_by_nd、cc_by_sa、cc_by_nc、cc_by_nc_nd、cc_by_nc_sa(含义见 Creative Commons)。
7.4 边界与冲突
- front-matter
reprintPolicy优先级高于全局license。 - 协议值拼写错误时卡片会显示原始字符串或回落默认(其他值未验证)。
7.5 小结
- 最小可用:
enable: true - 统一协议:改
license - 单篇例外:front-matter
reprintPolicy
内容渲染
8. 数学公式(math)
用途:文章内
$...$/$$...$$公式渲染。学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
8.1 如何启用
效果:正文里的 $E=mc^2$ 渲染成排版公式,$$...$$ 独立成行居中。
对应配置(主题配置):
post:
math:
enable: true
specific: true配置项来源:
post.mermaid.options的内容原样传给mermaid.initialize()(即 mermaidAPI 配置),因此theme/startOnLoad/securityLevel/flowchart等写法遵循 Mermaid 官方 mermaidAPI 文档。
8.2 常用选项
① 按需加载
效果:specific: true 时只有 front-matter 写了 mathjax: true 的文章才加载公式引擎,其他文章省掉这份 JS。
对应配置:
post:
math:
specific: true② 单篇启用
效果:该篇公式正常渲染;没写这一行的文章即使全局 enable: true 也不加载。
对应配置(文章 front-matter):
mathjax: true③ 换渲染引擎
效果:公式排版细节换成 KaTeX 风格(加载更快、字体不同)。
对应配置:
post:
math:
engine: katex8.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.math.enable | bool | false | true / false | 公式总开关 |
post.math.specific | bool | true | true / false | 仅 front-matter 声明的文章启用 |
post.math.engine | string | mathjax | mathjax / katex | 渲染引擎 |
front-matter mathjax | bool | — | true | 单篇启用标记 |
8.4 边界与冲突
specific: true是本博客的推荐用法——文章不需要公式时不加载引擎,需要时 front-matter 加mathjax: true(markdown-plugins.ejs检查page.mathjax)。- 自定义页面(非文章)用公式同样要 front-matter 指定
mathjax: true。 - 改
engine后必须 clean 构建,旧产物不会自动切换。
8.5 小结
- 最小可用:
enable: true+specific: true - 每篇要公式:front-matter
mathjax: true - 嫌 MathJax 慢:换
engine: katex
9. 流程图(mermaid)
用途:文章内 mermaid 流程图/时序图/甘特图渲染(
```mermaid代码块或 tag 插件)。学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
9.1 如何启用
效果:```mermaid 代码块被渲染成图(矩形节点 + 箭头),而不是显示源码。
对应配置(主题配置):
post:
mermaid:
enable: true
specific: true9.2 常用选项
① 按需加载
效果:只有 front-matter 写 mermaid: true 的文章加载 mermaid 库,其余文章不付这份体积。
对应配置:
post:
mermaid:
specific: true② 单篇启用
效果:该篇的 mermaid 块渲染成图。
对应配置(文章 front-matter):
mermaid: true③ 流程图不撑满容器
效果:图按自身宽度渲染、左侧对齐;改成 true 则横向撑满容器。
对应配置:
post:
mermaid:
options:
flowchart:
useMaxWidth: false④ 甘特图尺寸
效果:甘特图行高与行间距变化,barHeight: 20 / barGap: 4 更紧凑。
对应配置:
post:
mermaid:
options:
gantt:
useMaxWidth: true
barHeight: 20
barGap: 49.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.mermaid.enable | bool | true | true / false | mermaid 总开关 |
post.mermaid.specific | bool | true | true / false | 仅 front-matter 声明的文章启用 |
post.mermaid.options.theme | string | 'default' | mermaid 主题名(default/dark/forest/neutral 等) | 默认主题(会被明暗模式覆盖) |
post.mermaid.options.startOnLoad | bool | true | true / false | 页面加载即渲染 |
post.mermaid.options.securityLevel | string | 'loose' | strict / loose / antiscript | 安全级别 |
post.mermaid.options.flowchart.useMaxWidth | bool | false | true / false | 流程图是否撑满容器 |
post.mermaid.options.gantt.useMaxWidth | bool | true | true / false | 甘特图是否撑满容器 |
post.mermaid.options.gantt.barHeight | number | 20 | 正整数 | 甘特图行高 |
post.mermaid.options.gantt.barGap | number | 4 | 正整数 | 甘特图行间距 |
front-matter mermaid | bool | — | true | 单篇启用标记 |
9.4 边界与冲突
- mermaid 库加载较耗时,
specific: true时在文章 front-matter 写mermaid: true才启用(与 math 相同的按需加载模式)。 theme会被明暗模式动态覆盖,但可作为默认值。securityLevel: 'loose'允许 HTML 标签,仅在信任内容来源时使用。
9.5 小结
- 最小可用:
enable: true+specific: true - 每篇要图:front-matter
mermaid: true - 图太宽:
flowchart.useMaxWidth: false - 暗色下图看不清:交给明暗模式覆盖,不要硬编码
theme
10. 其他文章页功能
用途:上下篇导航、时效提示、分类栏、浏览器推送、侧边栏广告。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
10.1 如何启用
效果:文章底部出现上一页/下一页卡片;侧边栏出现当前分类文章列表;满足条件的文章顶部出现时效提示条。
对应配置(主题配置):
post:
prev_next:
enable: true
category_bar:
enable: true10.2 常用选项
① 上下篇导航
效果:文章末尾出现「上一篇 / 下一篇」两张卡片,按发布时间相邻取文。
对应配置:
post:
prev_next:
enable: true② 文章时效提示
效果:文章超过 warning_day 天显示黄色提醒,超过 error_day 天显示红色提醒。默认关闭。
对应配置:
post:
outdate:
enable: true
warning_day: 365
error_day: 3650③ 侧边栏分类栏
效果:侧边栏列出当前文章所属分类下的其他文章。specific: true 时仅 front-matter 写了 category_bar: true 的文章才显示。
对应配置:
post:
category_bar:
enable: true
specific: true
post_order_by: '-date'
post_limit: 0④ 浏览器推送订阅
效果:文章详情页底部出现 webpushr 订阅按钮,读者授权后新文发布可收到浏览器通知。
对应配置:
post:
webpush:
enable: true⑤ 侧边栏广告卡片
效果:侧边栏出现广告卡片(enable: false 的单条不显示)。
对应配置:
post:
advertisements:
- id: "ad-1"
text: "广告文案"
enable: true10.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
post.prev_next.enable | bool | true | true / false | 上下篇导航卡片 |
post.outdate.enable | bool | false | true / false | 文章时效提示 |
post.outdate.warning_day | number | 365 | 正整数(天) | 黄色提醒阈值 |
post.outdate.error_day | number | 3650 | 正整数(天) | 红色提醒阈值 |
post.category_bar.enable | bool | true | true / false | 侧边栏分类栏 |
post.category_bar.specific | bool | true | true / false | 仅声明文章显示 |
post.category_bar.post_order_by | string | title(主题默认) | 排序字段,如 '-date' | 文章排序 |
post.category_bar.post_limit | number | 0 | 0(不限)/ 正整数 | 显示条数上限 |
post.webpush.enable | bool | true | true / false | 推送订阅按钮 |
post.advertisements[].id | string | — | 任意字符串 | 广告标识 |
post.advertisements[].text | string | — | 任意字符串 | 广告文案 |
post.advertisements[].enable | bool | true | true / false | 单条启停 |
10.4 边界与冲突
post.webpush.enable: true时,文章详情页底部(_partial/common/webpush)显示 webpushr 订阅按钮,读者点击授权后可在新文章发布时收到浏览器推送通知。需先在 app.webpushr.com 注册站点并注入订阅脚本(webpushr站点 ID 配置在主题 head 模板中)。category_bar.specific: true时,front-matter 必须写category_bar: true,否则栏位不出现。post_order_by的合法值与 Hexo 排序字段一致(-date、date、title等),其他值未验证。
10.5 小结
- 最小可用:
prev_next.enable: true - 旧文提醒:开
outdate,按内容时效调两个阈值 - 侧边栏太挤:先关
category_bar或advertisements - 推送要运维:
webpush依赖 webpushr 站点脚本
信息展示
11. 文章信息(postInfo)
用途:文章页信息栏的独立开关组——作者、日期、字数、总字数、阅读时长、阅读模式、阅读次数、评论数。与 §2
post.meta是两套机制,postInfo控制的是另一处信息展示。学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
11.1 如何启用
效果:文章页信息栏出现多项元数据(作者、日期、更新日期、字数、全站总字数、时长、阅读模式按钮、阅读次数、评论数)。
对应配置(主题配置):
postInfo:
author: true
date: true
update: true
wordCount: true
totalCount: true
min2read: true
readMode: true
readCount: true
commentCount: true11.2 常用选项
① 阅读模式按钮
效果:信息栏出现「阅读模式」入口,点击后隐藏侧边栏与干扰元素,只留正文。
对应配置:
postInfo:
readMode: true② 评论数
效果:信息栏显示该篇评论数量(目前仅 Waline 支持)。
对应配置:
postInfo:
commentCount: true③ 全站总字数
效果:显示 totalcount(site) 的结果(文章 + wiki 页,去重、加密文按明文计)。
对应配置:
postInfo:
totalCount: true④ 只留必要项
效果:信息栏只剩作者、日期、字数,界面更干净。
对应配置:
postInfo:
author: true
date: true
wordCount: true
update: false
totalCount: false
min2read: false
readMode: false
readCount: false
commentCount: false11.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
postInfo.author | bool | true | true / false | 作者 |
postInfo.date | bool | true | true / false | 发布日期 |
postInfo.update | bool | true | true / false | 更新日期 |
postInfo.wordCount | bool | true | true / false | 文章字数 |
postInfo.totalCount | bool | true | true / false | 站点总字数 |
postInfo.min2read | bool | true | true / false | 阅读时长 |
postInfo.readMode | bool | true | true / false | 阅读模式 |
postInfo.readCount | bool | true | true / false | 阅读次数 |
postInfo.commentCount | bool | true | true / false | 评论个数(Waline) |
totalCount(totalcount(site))统计范围为文章 + wiki 页:多语言版本去重(同一内容只计一次)、加密文章按明文计数。
11.4 边界与冲突
- 字数统计与阅读时长由主题内置 helper 提供(
scripts/helpers/wordcount.js),无需额外安装插件。 wordcount/min2read/totalcount三个 helper 由主题自研,其中totalcount用于 footer 全站总字数(已包含 wiki 页面与加密文章的明文计数)。- 与 §2
post.meta同时开启会出现两处重复信息;建议只留一套。
11.5 小结
- 最小可用:
author+date+wordCount - 想沉浸阅读:开
readMode - 评论数不显示:确认
postInfo.commentCount与waline.comment都开 - 别和
post.meta重复:二选一
12. 美化 hr 分割线(hr)
用途:文章内
---水平分割线的美化样式。学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
12.1 如何启用
效果:Markdown 的 --- 从默认细线变成带装饰的美化分割线(居中装饰图形或渐变线)。
对应配置(主题配置):
hr:
enable: true12.2 常用选项
① 关闭美化
效果:--- 恢复浏览器默认的细横线。
对应配置:
hr:
enable: false12.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
hr.enable | bool | false | true / false | 美化分割线开关 |
12.4 边界与冲突
- 开启后 Markdown 的
---渲染为带装饰的美化分割线,而非默认细线。 - 只影响正文
<hr>,不影响 front-matter 分隔符。
12.5 小结
- 最小可用:
hr.enable: true - 觉得花哨:保持默认
false
统计与验证
13. Gitment 评论(gitment)
用途:基于 GitHub Issues 的评论系统(Gitment)。默认关闭,本博客主用 Waline。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
13.1 如何启用
效果:文章底部出现 GitHub Issues 风格的评论区,读者用 GitHub 账号登录后评论。
对应配置(主题配置):
gitment:
enable: true
owner: your-github-name
repo: your-comments-repo
oauth:
clientId: your-client-id
clientSecret: your-client-secret13.2 常用选项
① 指定仓库
效果:评论写进 owner/repo 对应的 GitHub Issues,每篇文章一个 issue。
对应配置:
gitment:
owner: your-github-name
repo: your-comments-repo② OAuth 凭据
效果:读者能登录并发表评论;填错时评论区只显示登录失败。
对应配置:
gitment:
oauth:
clientId: your-client-id
clientSecret: your-client-secret13.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
gitment.enable | bool | false | true / false | Gitment 开关 |
gitment.owner | string | — | GitHub 用户名 | 仓库所有者 |
gitment.repo | string | — | 仓库名 | 存放评论的仓库 |
gitment.oauth.clientId | string | — | OAuth App Client ID | GitHub OAuth |
gitment.oauth.clientSecret | string | — | OAuth App Client Secret | GitHub OAuth |
13.4 边界与冲突
- 启用需在 GitHub 创建 OAuth App 并填
owner/repo/clientId/clientSecret。 - 安全警告:Gitment/Gitalk 这类 OAuth App 权限过高(可读写授权者所有公共仓库),拿到 Token 的攻击者可清空你的公共仓库,官方不推荐使用——建议用 utterances 这类仅限单仓库的 GitHub App(见配置注释)。
- 与
post.comments.type是两套入口:只有type: gitment时此段才真正接管评论区。
13.5 小结
- 最小可用:
enable+owner+repo+ OAuth 两值 - 安全优先:改用 utterances/giscus
- 不确定就别开:保持默认
false
14. 腾讯人机验证(tcaptcha)
用途:评论提交前的腾讯验证码(滑块/点选),防垃圾评论。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
14.1 如何启用
效果:点击评论提交后弹出滑块或点选验证,通过后才写入评论。
对应配置(主题配置):
tcaptcha:
enable: true
appid: 205716020314.2 常用选项
① 填自己的 appid
效果:验证码使用你腾讯云账号下的验证码配置;appid 不属于你的站点时验证直接失败。
对应配置:
tcaptcha:
appid: 你的 appid14.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
tcaptcha.enable | bool | false | true / false | 人机验证开关 |
tcaptcha.appid | number | — | 腾讯云验证码 appid | 验证码应用 ID |
14.4 边界与冲突
14.5 小结
- 最小可用:
enable+appid - 用 Waline:此项不适用(仅 Valine 验证过)
- 没备案/没控制台:保持关闭
15. Waline 全站计数器(minWalineCount)
用途:页脚全站 PV(浏览量)统计,由 Waline 服务提供。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
15.1 如何启用
效果:页脚出现「全站访问 N 次」的数字,随访问增长。
对应配置(主题配置):
minWalineCount:
enable: true
serverURL: 'https://waline.17lai.site'
pageview: true15.2 常用选项
① 换服务地址
效果:计数从你的 Waline 实例读取;地址错误则数字不显示或一直为 0。
对应配置:
minWalineCount:
serverURL: 'https://your-waline.example.com'② 关闭页脚计数
效果:页脚不再显示全站 PV。
对应配置:
minWalineCount:
enable: false15.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
minWalineCount.enable | bool | true | true / false | 页脚全站 PV |
minWalineCount.serverURL | string | — | Waline 服务 URL | 数据来源 |
minWalineCount.pageview | bool | true | true / false | 浏览量统计 v2 |
15.4 边界与冲突
- 页脚"全站 PV"由
walineCount.ejs从 Waline 服务拉取并更新。 - 需要
pageview: true才会累计;只开enable不产生数据。 - 与 §16 是两个独立计数器,可只开其一。
15.5 小结
- 最小可用:
enable+serverURL+pageview - 数字为 0:检查服务端是否可访问
- 不想暴露 PV:
enable: false
16. Waline 评论计数器(minWalineCommentCount)
用途:全站评论总数统计。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
16.1 如何启用
效果:页脚或统计区出现全站评论总数。
对应配置(主题配置):
minWalineCommentCount:
enable: true
serverURL: 'https://waline.17lai.site'
comment: true16.2 常用选项
① 保持关闭(推荐)
效果:评论计数仍由 waline.ejs(theme.waline.comment)提供,不产生重复请求。
对应配置:
minWalineCommentCount:
enable: false16.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
minWalineCommentCount.enable | bool | false | true / false | 全站评论总数 |
minWalineCommentCount.serverURL | string | — | Waline 服务 URL | 数据来源 |
minWalineCommentCount.comment | bool | true | true / false | 评论量统计 v2 |
16.4 边界与冲突
- 默认关闭——评论计数已由
waline.ejs(theme.waline.comment)承担,开启会重复请求。 - 若要全站汇总数(而非单篇),再打开此项。
16.5 小结
- 默认就好:保持
enable: false - 要全站汇总:
enable+comment+serverURL - 别和
waline.comment同时开:重复请求
17. 文章密码验证(verifyPassword)
用途:为指定文章设置访问密码,输入正确密码才能阅读。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
17.1 如何启用
效果:打开加密文章时正文被遮罩,弹出密码输入框;输错提示「密码错误,将返回主页!」。
对应配置(主题配置):
verifyPassword:
enable: true
promptMessage: 请输入访问本文章的密码
errorMessage: 密码错误,将返回主页!17.2 常用选项
① 给文章设密码
效果:该篇文章打开即要求输入密码,输入正确后解密显示正文。
对应配置(文章 front-matter):
password: "你的密码"② 改提示文案
效果:密码框上方与错误弹窗的文字变化。
对应配置:
verifyPassword:
promptMessage: 请输入密码
errorMessage: 密码错误③ 内容片段加密
效果:只遮住文章中的一段内容,其余正文正常显示;适合隐藏配置片段。
对应配置(正文中):
{% encrypt 密码 "标题" "简介" %}...{% endencrypt %}④ Wiki 整体加密
效果:整个 wiki 栏目需要密码才能进入。
对应配置(source/_data/{wiki}-sidebar.yml):
encrypt_password: "你的密码"17.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
verifyPassword.enable | bool | false | true / false | 密码验证总开关 |
verifyPassword.promptMessage | string | — | 任意字符串 | 密码框提示 |
verifyPassword.errorMessage | string | — | 任意字符串 | 密码错误提示 |
front-matter password | string | — | 明文密码 | 单篇加密 |
{wiki}-sidebar.yml encrypt_password | string | — | 明文密码 | Wiki 整体加密 |
文章 front-matter(2026-08-09 起自研 HBE v4,密码直接明文,不再要求 SHA256 密文):
password: "你的密码" # 直接写明文密码17.4 边界与冲突
- 自研 HBE v4 体系(2026-08-09 替代 hexo-blog-encrypt 插件)——服务端 AES-256-GCM 加密,密文存 HTML(无明文泄漏),前端 WebCrypto 解密。front-matter
password直接写明文即可(不再需要 SHA256 预加密)。 - 其他加密方式:
- 内容片段加密:
{% encrypt 密码 "标题" "简介" %}...{% endencrypt %}(段落级,支持内部 tag,详见「tag 插件」篇 §15) - Wiki 整体加密:
{wiki}-sidebar.yml加encrypt_password(详见「布局与页面」篇 §8) - 密码存储:autoSave 存派生 dk(非密码/明文),1 天 TTL
- 内容片段加密:
- 解密后刷新(2026-09-09):解密完成后正文中的组件统一重新初始化(post/wiki/相册共用,hbe-bundle onSuccess 触发)——代码块 toolbar(codeWidget)、图片灯箱(articleInit)、mermaid/进度条(events.refresh)、布局(boot.refresh)。无需手动刷新页面,各组件幂等(data-processed 防重复)。
17.5 小结
- 最小可用:
verifyPassword.enable+ front-matterpassword - 只藏一段:用
encrypttag,不加密整篇 - 整栏加密:
{wiki}-sidebar.yml的encrypt_password - 密码写明文:HBE v4 不再需要 SHA256
分享与推荐
18. 文章分享(sharejs)
用途:文章底部分享按钮,支持多平台。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
18.1 如何启用
效果:文章底部出现一排分享图标(Twitter、Facebook、QQ、微博等),点击把当前文章分享到对应平台。
对应配置(主题配置):
sharejs:
enable: true
sites: twitter,facebook,qq,qzone,wechat,weibo,douban18.2 常用选项
① 选择平台
效果:只显示 sites 里列出的平台图标;删掉某个平台,对应图标消失。
对应配置:
sharejs:
sites: qq,wechat,weibo,douban② 关闭分享
效果:文末不再出现分享图标。
对应配置:
sharejs:
enable: false18.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
sharejs.enable | bool | true | true / false | 分享按钮开关 |
sharejs.sites | string | — | 逗号分隔:twitter/facebook/google/qq/qzone/wechat/weibo/douban/linkedin | 显示的平台 |
18.4 边界与冲突
sites为逗号分隔的平台列表,可选:twitter, facebook, google, qq, qzone, wechat, weibo, douban, linkedin。- 与 §19 AddThis 是替代关系,同时开启会显示两套分享入口。
18.5 小结
- 最小可用:
enable: true+sites - 国内读者为主:留
qq,wechat,weibo,douban - 和 AddThis 二选一
19. AddThis 分享(addthis)
用途:基于 AddThis 的分享模块(sharejs 的替代方案)。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
19.1 如何启用
效果:文章底部出现 AddThis 的分享条(侧边悬浮或横排,取决于 AddThis 配置)。
对应配置(主题配置):
addthis:
enable: true
pubid: 613a04428f842fe119.2 常用选项
① 填自己的 pubid
效果:分享数据统计进你的 AddThis 账号;pubid 无效时分享条不加载。
对应配置:
addthis:
pubid: 你的 pubid19.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
addthis.enable | bool | false | true / false | AddThis 开关 |
addthis.pubid | string | — | AddThis 发布者 ID | 账号标识 |
19.4 边界与冲突
- 与 sharejs 二选一,
enable: true时用 AddThis 分享;pubid在 AddThis 官网注册后获取。 - 两者同时开启会出现两套分享入口。
19.5 小结
- 最小可用:
enable+pubid - 已用 sharejs:保持
false - 要统计:先注册 AddThis
20. 相关文章推荐(related_posts)
用途:文章底部展示相关文章推荐列表。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
20.1 如何启用
效果:文章末尾出现「相关文章推荐」区块,按标签/分类相似度列出若干篇文章卡片。
对应配置(主题配置):
related_posts:
enable: true
title: 相关文章推荐20.2 常用选项
① 推荐数量
效果:底部最多列出 5 篇;改小则列表更短,改大则更长。
对应配置:
related_posts:
params:
maxCount: 5② 显示日期/图片/摘要
效果:卡片上多出日期、封面图或摘要文字;全 false 时只有标题。
对应配置:
related_posts:
params:
isDate: true
isImage: true
isExcerpt: true③ 首页也显示
效果:首页文章卡片下方也出现相关推荐。
对应配置:
related_posts:
display_in_home: true20.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
related_posts.enable | bool | false | true / false | 推荐区块开关 |
related_posts.title | string | — | 任意字符串(留空用默认) | 区块标题 |
related_posts.display_in_home | bool | false | true / false | 首页是否显示 |
related_posts.params.maxCount | number | 5 | 正整数 | 最大推荐数 |
related_posts.params.PPMixingRate | number | 0.25 | 0–1 | 混合比例 |
related_posts.params.isDate | bool | false | true / false | 显示日期 |
related_posts.params.isImage | bool | false | true / false | 显示图片 |
related_posts.params.isExcerpt | bool | false | true / false | 显示摘要 |
20.4 边界与冲突
- 基于标签/分类相似度推荐;
display_in_home: true时首页文章卡片也显示相关推荐。 PPMixingRate控制热门与相似的混合比例,改动效果需按内容实测(其他值未验证)。
20.5 小结
- 最小可用:
enable: true - 卡片太素:开
isImage/isExcerpt - 首页太挤:
display_in_home: false
21. LeanCloud 阅读数(leancloud_visitors)
用途:基于 LeanCloud 的文章阅读数统计(
post.meta.views.source: leancloud时的数据源)。学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
21.1 如何启用
效果:文章元信息里的「N 次阅读」由 LeanCloud 计数,刷新页面数字递增。
对应配置(主题配置):
leancloud_visitors:
enable: true
app_id: your-app-id
app_key: your-app-key并确认:
post:
meta:
views:
source: leancloud21.2 常用选项
① 换应用凭据
效果:计数写入你自己的 LeanCloud 应用;凭据错误时阅读数不显示。
对应配置:
leancloud_visitors:
app_id: your-app-id
app_key: your-app-key21.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
leancloud_visitors.enable | bool | true | true / false | LeanCloud 阅读数开关 |
leancloud_visitors.app_id | string | — | LeanCloud App ID | 应用标识 |
leancloud_visitors.app_key | string | — | LeanCloud App Key | 应用密钥 |
21.4 边界与冲突
- 启用后需在 §2
post.meta.views.source设为leancloud才生效;本博客默认用 umami,此配置保留备用。 app_key会出现在前端产物中,LeanCloud 应用应设置为只读/受限权限。
21.5 小结
- 最小可用:
enable+ 两个凭据 +source: leancloud - 主用 umami:本段可保持关闭
- 注意权限:前端可见
app_key
22. Google AdSense(googleAd)
用途:文章页 Google AdSense 广告位。
学习路径:如何启用 → 常用选项 → 全部可调项 → 边界与冲突
22.1 如何启用
效果:文章页出现 AdSense 广告位(未审核通过时显示空白)。
对应配置(主题配置):
googleAd:
enable: true
adClient: "ca-pub-2899930387274309"22.2 常用选项
① 换发布商 ID
效果:广告归入你的 AdSense 账号结算;ID 错误时广告不加载。
对应配置:
googleAd:
adClient: "ca-pub-你的ID"22.3 全部可调项
| 键 | 类型 | 默认 | 可选值/范围 | 作用 |
|---|---|---|---|---|
googleAd.enable | bool | false | true / false | 广告位开关 |
googleAd.adClient | string | — | ca-pub- 开头的发布商 ID | AdSense 账号 |
22.4 边界与冲突
adClient为 AdSense 发布商 ID(ca-pub-开头),在 Google AdSense 注册后获取。- 配置注释标注"还未完善"。
22.5 小结
- 最小可用:
enable+adClient - 未注册:保持
false - 功能未完善:上线前先小范围验证
附:文章页配置速查表
| 配置项 | 位置 | 说明 |
|---|---|---|
| 文章头图 | post.banner_img 等 | front-matter banner_img 单篇覆盖 |
| 作者/日期 | post.meta.author / post.meta.date | 日期格式 "LL a" |
| 字数/时长 | post.meta.wordcount / post.meta.min2read | awl 1 / wpm 300 |
| 阅读数 | post.meta.views | 数据源 umami/busuanzi/leancloud/waline |
| 更新时间 | post.updated | 默认关闭,front-matter updated 指定 |
| TOC | toc | front-matter toc: false 单篇关闭 |
| 评论 | post.comments | type: waline,front-matter comments 控制 |
| 打赏 | post.reward | 微信/支付宝收款码 |
| 版权 | post.copyright(含 license 子键) | front-matter reprintPolicy 单篇覆盖 |
| 公式 | post.math | specific: true + front-matter mathjax: true |
| 流程图 | post.mermaid | specific: true + front-matter mermaid: true |
| 上下篇/时效/分类栏/广告 | post.prev_next / outdate / category_bar / advertisements | 见「布局与页面」篇 |
阅读顺序建议:先按 §1–§12 把页面主体配出来(头图、元信息、目录、评论、版权、公式),再按 §13–§22 逐个接统计与分享。每节只改一个
enable就能看到效果,出问题先回滚该节的配置。