获取
Syntax
TAXONOMY.Get TERM
Returns
page.WeightedPages
Get
方法在 Taxonomy
对象上返回给定术语被分配到的加权页面切片。
在我们使用Taxonomy
方法之前,需要获取一个Taxonomy
对象。
获取一个Taxonomy对象
考虑到以下的站点配置:
hugo.
taxonomies:
author: authors
genre: genres
[taxonomies]
author = 'authors'
genre = 'genres'
{
"taxonomies": {
"author": "authors",
"genre": "genres"
}
}
以及以下的内容结构:
content/
├── books/
│ ├── and-then-there-were-none.md --> genres: suspense
│ ├── death-on-the-nile.md --> genres: suspense
│ └── jamaica-inn.md --> genres: suspense, romance
│ └── pride-and-prejudice.md --> genres: romance
└── _index.md
要在任何模板中获取“genres”分类法对象,可以在Site
对象上使用Taxonomies
方法。
{{ $taxonomyObject := .Site.Taxonomies.genres }}
要在渲染其页面时捕获“genres”分类法对象,可以在页面的Data
对象上使用Terms
方法:
layouts/_default/taxonomy.html
{{ $taxonomyObject := .Data.Terms }}
要检查数据结构:
<pre>{{ jsonify (dict "indent" " ") $taxonomyObject }}</pre>
虽然Alphabetical
和ByCount
方法在对分类法进行浏览时提供了更好的数据结构,但您可以直接从Taxonomy
对象中渲染按项加权的页面:
{{ range $term, $weightedPages := $taxonomyObject }}
<h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
<ul>
{{ range $weightedPages }}
<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
{{ end }}
</ul>
{{ end }}
在上面的例子中,第一个锚元素是指向项页面的链接。
获取加权页面
现在我们已经获取了 “genres” Taxonomy
对象,让我们获取"悬疑"这个术语被分配到的加权页面:
{{ $weightedPages := $taxonomyObject.Get "suspense" }}
上述代码等同于:
{{ $weightedPages := $taxonomyObject.suspense }}
但是,如果术语不是一个有效的标识符,则无法使用链式调用的语法。例如,下面的代码会抛出错误,因为标识符包含了一个连字符:
{{ $weightedPages := $taxonomyObject.my-genre }}
您也可以使用index
函数,但语法更冗长:
{{ $weightedPages := index $taxonomyObject "my-genre" }}
要检查数据结构:
<pre>{{ jsonify (dict "indent" " ") $weightedPages }}</pre>
示例
使用以下模板:
{{ $weightedPages := $taxonomyObject.Get "suspense" }}
{{ range $weightedPages }}
<h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
{{ end }}
Hugo 渲染的结果如下:
<h2><a href="/books/jamaica-inn/">Jamaica inn</a></h2>
<h2><a href="/books/death-on-the-nile/">Death on the nile</a></h2>
<h2><a href="/books/and-then-there-were-none/">And then there were none</a></h2>