链接和交叉引用
ref
和relref
短代码分别用于显示文档的绝对和相对固定链接。
使用ref
和relref
ref
和relref
短代码需要一个参数:内容文档的路径,可以带或不带文件扩展名,可以带或不带锚点。没有前导/
的路径首先相对于当前页面解析,然后相对于站点的剩余部分。
.
└── content
├── about
| ├── _index.md
| └── credits.md
├── pages
| ├── document1.md
| └── document2.md // 有锚点 #anchor
├── products
| └── index.md
└── blog
└── my-post.md
页面可以按如下方式引用:
{{< ref "document2" >}} // <- 从 pages/document1.md,相对路径
{{< ref "document2#anchor" >}}
{{< ref "document2.md" >}}
{{< ref "document2.md#anchor" >}}
{{< ref "#anchor" >}} // <- 从 pages/document2.md
{{< ref "/blog/my-post" >}} // <- 从任意地方,绝对路径
{{< ref "/blog/my-post.md" >}}
{{< relref "document" >}}
{{< relref "document.md" >}}
{{< relref "#anchor" >}}
{{< relref "/blog/my-post.md" >}}
index.md可以通过其路径或不含末尾/
的包含文件夹来引用。_index.md只能通过其包含的文件夹来引用:
{{< ref "/about" >}} // <- 引用 /about/_index.md
{{< ref "/about/_index" >}} // 引发 REF_NOT_FOUND 错误
{{< ref "/about/credits.md" >}} // <- 引用 /about/credits.md
{{< ref "/products" >}} // <- 引用 /products/index.md
{{< ref "/products/index" >}} // <- 引用 /products/index.md
使用ref
或relref
在markdown中生成超链接:
[关于]({{< ref "/about" >}} "关于我们")
如果无法唯一解析文档,Hugo会发出错误或警告。错误行为是可配置的;请参阅下面的内容。
链接到其他语言版本
要链接到文档的其他语言版本,请使用以下语法:
{{< relref path="document.md" lang="ja" >}}
获取另一种输出格式
要链接到文档的另一种输出格式,请使用以下语法:
{{< relref path="document.md" outputFormat="rss" >}}
标题ID
在使用Markdown文档类型时,Hugo会为页面上的每个标题生成元素ID。例如:
## 引用
生成以下HTML:
<h2 id="reference">引用</h2>
通过在使用ref
或relref
短代码时将ID附加到路径来获取标题的固定链接:
{{< ref "document.md#reference" >}}
{{< relref "document.md#reference" >}}
通过包含属性来生成自定义标题ID。例如:
## 引用A {#foo}
## 引用B {id="bar"}
生成以下HTML:
<h2 id="foo">引用A</h2>
<h2 id="bar">引用B</h2>
如果同一个标题在页面上出现多次,Hugo会生成唯一的元素ID。例如:
## 引用
## 引用
## 引用
生成以下HTML:
<h2 id="reference">引用</h2>
<h2 id="reference-1">引用</h2>
<h2 id="reference-2">引用</h2>
Ref和RelRef配置
可以在hugo.toml
中配置行为:
- refLinksErrorLevel (“ERROR”)
- 当使用
ref
或relref
解析页面链接时,如果无法解析链接,将以此日志级别记录。有效值为ERROR
(默认)或WARNING
。任何ERROR
将导致构建失败(exit -1
)。 - refLinksNotFoundURL
- 当在
ref
或relref
中找不到页引用时使用的URL。直接使用该URL。