標籤和類別是分類法

分類學,你能吃什麼?

第一次聽到taxonomy這個詞,很多人可能不理解,但它在英文中是分類的意思。

https://en.wikipedia.org/wiki/%E5%88%86%E9%A1%9E%E4%BD%93%E7%B3%BB - 分類系統

相當於“分類”的英文有“taxonomy”和“(classification)分類”

雨果網站上的手冊說

https://gohugo.io/content-management/taxonomies/ - 分類法

什麼是分類法?
Hugo 支持用戶定義的內容分組,稱為分類法。

使用分類法進行標記和分類

如果你想用 Hugo 給文章添加標籤和分類,並創建標籤列表和分類列表,

  • 調整 config.toml
  • 在文章中指定標籤和類別
  • 準備terms.html,創建標籤列表和分類列表頁面
  • 調整list.html,顯示相應標籤/分類的文章列表

調整 config.toml

將以下內容添加到 config.toml

1
2
3
[taxonomies]
  tag = "tags"
  category = "categories"

這樣,

https://[サイトのURL]/tags/

https://[サイトのURL]/categories/

您可以使用以下 URL 訪問標籤列表和類別列表頁面

在文章標題中添加標籤和類別

在博客文章的 Markdown md 文件的標題中,

1
2
3
4
title: "Hugo 是如何處理標籤和類別的?"
date: 2020-01-01T01:01:01+09:00
tags: [hugo, taxonomy]
categories: [hugo]

指定文章與哪些標籤相關聯以及與哪些類別相關聯。
在上面的例子中,這篇文章有標籤 hugo 和 taxonomy 並且屬於 hugo 類別。

tags 和 categories 都可以關聯多個關鍵詞(稱為term),但是如果有多個關鍵詞,可以用逗號分隔指定。

準備terms.html,創建標籤列表和分類列表頁面

layouts/_default/terms.html準備

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
{{ if eq .Title "Tags"}}
    <h2>タグ</h2>
    <ul style="list-style-type: none;">
        {{ range .Site.Taxonomies.tags.ByCount }}
        <li><a href="{{ "/tags/" | relURL }}{{ .Name | urlize }}">{{ .Name }}({{ .Count }})</a></li>
        {{ end }}
    </ul>
{{ else if eq .Title "Categories"}}
    <h2>カテゴリ</h2>
    <ul style="list-style-type: none;">
        {{ range .Site.Taxonomies.categories.ByCount }}
        <li><a href="{{ "/categories/" | relURL }}{{ .Name | urlize }}">{{ .Name }}({{ .Count }})</a></li>
        {{ end }}
    </ul>
{{ end }}

判斷該頁面是否為標籤列表頁/分類列表頁,然後對其進行標記,按照分類文章數的順序排列,以range循環,依次將標籤和分類順序依次顯示。術語和與該術語相關的文章數量。

結果顯示如下所示。

調整list.html,顯示相應標籤/分類的文章列表

例如,屬於類別 hugo 的頁面列表是

https://[サイトのURL]/categories/hugo/

這將是一個名為

https://gohugo.io/templates/taxonomy-templates/ - 分類法模板

.Pages
分配給該術語的所有頁面。

,您可以使用 .Pages 獲取與該類別(術語​​術語)關聯的頁面列表。以出版日期的倒序​​列出它們,

layouts/_default/list.html

1
2
3
4
5
6
7
<h1>{{ .Title }}</h1>
{{ range .Pages.ByPublishDate.Reverse }}
<p>
  <a class="font-125" href="{{ .RelPermalink }}">{{ .Title }}</a>
  <br>
</p>
{{ end }}

它應該是這樣的形式

結果https://[サイトのURL]/categories/hugo/頁面將如下所示:

另外,在這個博客上的展示其實是在this上加上文章日期等符號的形式。