代码仓库链接与页面信息

帮助读者查看、编辑页面源码,并针对源码报告问题。

OINK 的文档与博客布局可以显示指向当前页面源码仓库的链接:

  • 查看页面源码:打开源文件。
  • 编辑本页:打开可编辑的源码视图。
  • 创建子页面:在当前页面下新建文件,并可使用站点的 assets/stubs/new-page-template.md 模板。
  • 创建文档 issue:携带页面上下文,在文档仓库中创建 issue。
  • 创建项目 issue:可选地把 issue 提交到另一个产品仓库。

内置 URL 模式面向 GitHub 风格的代码仓库。如果使用其他兼容托管服务,请逐项验证;如果 URL 结构不同,应覆盖相应 partial。

典型站点配置如下:

params:
  github_repo: https://github.com/OWNER/DOCS
  github_project_repo: https://github.com/OWNER/PRODUCT
  github_branch: main
  github_subdir: site

当内容来自多个代码仓库时,可以在全局、单种语言、分区 cascade 或页面 front matter 中设置这些值。

github_repo

文档源码仓库 URL。它用于生成查看、编辑、创建子页面和创建文档 issue 链接:

params:
  github_repo: https://github.com/pgsty/oink

省略后将隐藏从仓库派生的页面操作。如果页面源码实际位于消费站点,不要把它错误地指向主题仓库。

github_subdir(可选)

设置从仓库根目录到 Hugo 站点源码的路径。本项目把站点存放在 oink.pgsty.com 中:

params:
  github_subdir: oink.pgsty.com

该值是仓库内路径,不是本地绝对路径;除非内容目录就是实际站点根目录,否则也不能直接填写内容目录。

github_project_repo(可选)

设置另一个产品仓库,以显示 创建项目 issue

params:
  github_project_repo: https://github.com/OWNER/PRODUCT

内容缺陷应提交到文档仓库,页面讨论的产品行为应提交到产品仓库。如果读者无法清楚理解两者区别,应省略第二条链接。

github_branch(可选)

设置源码与编辑 URL 使用的分支:

params:
  github_branch: main

通常应填写站点源码分支。它不一定是部署分支、自动生成的 Pages 分支或主题修订版本。

path_base_for_github_subdir(可选)

如果某棵内容子树从另一个仓库挂载,请使用分区 cascade。系统会先移除 path base,再把剩余内容路径附加到 github_subdir

---
title: Imported reference
cascade:
  github_repo: https://github.com/OWNER/UPSTREAM
  github_project_repo: https://github.com/OWNER/UPSTREAM
  github_subdir: docs
  path_base_for_github_subdir: content/reference
---

对于源页面 content/reference/api/client.md,以上配置会把仓库路径映射为 docs/api/client.md

path_base_for_github_subdir 可以是正则表达式。按语言目录组织内容的站点可以写成:

path_base_for_github_subdir: content/\w+/reference

OINK 将 .md.zh.md 并置保存,通常两种语言使用相同静态 base,因此表达式中不需要语言目录。

如果源文件使用不同名称,请使用 fromto 映射。下面把分区 _index.md 映射到上游 README.md

path_base_for_github_subdir:
  from: content/reference/(.*?)/_index.md
  to: $1/README.md

请分别从叶子页、分区页和两种语言页面测试查看与编辑链接。正则表达式移除路径过多时,可能生成看似合理却指向错误位置的仓库 URL。

github_url(可选)

旧页面可以在 front matter 中设置完整的自定义编辑 URL:

---
title: Imported page
github_url: https://github.com/OWNER/UPSTREAM/edit/main/README.md
---

使用该值的页面只显示 编辑本页。当目标与 GitHub 不兼容时,更适合使用站点专属模板覆盖。

每种操作都有稳定的 CSS 类:

链接 CSS 类
查看页面源码 .td-page-meta__view
编辑本页 .td-page-meta__edit
创建子页面 .td-page-meta__child
创建文档 issue .td-page-meta__issue
创建项目 issue .td-page-meta__project-issue

当目标不支持某项操作时,可以在 assets/scss/_styles_project.scss 中将其隐藏:

.td-page-meta__child {
  display: none;
}

对于全局不可用的目标,应优先从配置中省略。CSS 隐藏适合选择性策略,但不能让错误链接变正确。

页面最后修改信息

启用 Hugo Git 信息并配置源码仓库:

enableGitInfo: true
params:
  github_repo: https://github.com/OWNER/DOCS

OINK 随后可以在文档与博客页显示最后一次提交的日期、主题、hash 和源码链接。CI 必须为当前文件获取足够的 Git 历史;浅克隆可能导致元数据缺失或产生误导。

如果要在特定站点或分区隐藏提示,可以覆盖样式或负责页面元信息的 partial。当 Git 历史不可用时,不要把构建时间冒充为“最后修改”时间。