HUGO
Menu
GitHub 87548 stars Mastodon

ByCount

返回按與每個術語關聯的頁面數量排序的有序分類法。

Syntax

TAXONOMY.ByCount

Returns

page.OrderedTaxonomy

Taxonomy 對象上的 ByCount 方法返回 有序分類法,按與每個 術語 關聯的頁面數量排序,如果數量相同則按術語字母順序排序。

雖然 Taxonomy 對象是 映射,但有序分類法是 切片,其中每個元素是包含術語和其 加權頁面 切片的對象。

在使用 Taxonomy 方法之前,我們需要獲取一個 Taxonomy 對象。

獲取分類法對象

考慮此站點配置:

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” Taxonomy 對象,請在 Site 對象上使用 Taxonomies 方法。

{{ $taxonomyObject := .Site.Taxonomies.genres }}

在使用 分類法 模板渲染其頁面時獲取 “genres” Taxonomy 對象,請在頁面的 Data 對象上使用 Terms 方法:

layouts/taxonomy.html
{{ $taxonomyObject := .Data.Terms }}

要檢查數據結構:

<pre>{{ debug.Dump $taxonomyObject }}</pre>

雖然 AlphabeticalByCount 方法提供了更好的數據結構用於遍歷分類法,但您可以直接從 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"分類法對象,讓我們獲取按與每個術語關聯的頁面數量排序的有序分類法:

{{ $taxonomyObject.ByCount }}

要反轉排序順序:

{{ $taxonomyObject.ByCount.Reverse }}

要檢查數據結構:

<pre>{{ debug.Dump $taxonomyObject.ByCount }}</pre>

有序分類法是一個切片,其中每個元素是一個對象,包含術語及其加權頁面切片。

切片的每個元素提供以下方法:

Count
(int) 返回分配給術語的頁面數量。
Page
(page.Page) 返回術語的 Page 對象,用於鏈接到術語頁面。
Pages
(page.Pages) 返回包含分配給術語的 Page 對象的 Pages 對象,按 分類權重 排序。要排序或分組,請使用 Pages 對象可用的任何 方法。例如,按最後修改日期排序。
Term
(string) 返回術語名稱。
WeightedPages
(page.WeightedPages) 返回分配給術語的加權頁面切片,按分類權重排序。上面的 Pages 方法更靈活,允許您排序和分組。

示例

使用此模板:

{{ range $taxonomyObject.ByCount }}
  <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
  <ul>
    {{ range .Pages.ByTitle }}
      <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
    {{ end }}
  </ul>
{{ end }}

Hugo 渲染:

<h2><a href="/genres/suspense/">suspense</a> (3)</h2>
<ul>
  <li><a href="/books/and-then-there-were-none/">And then there were none</a></li>
  <li><a href="/books/death-on-the-nile/">Death on the nile</a></li>
  <li><a href="/books/jamaica-inn/">Jamaica inn</a></li>
</ul>
<h2><a href="/genres/romance/">romance</a> (2)</h2>
<ul>
  <li><a href="/books/jamaica-inn/">Jamaica inn</a></li>
  <li><a href="/books/pride-and-prejudice/">Pride and prejudice</a></li>
</ul>

Last updated: January 1, 0001
Improve this page