△タクソノミー

Grav には、タクソノミーを用いてページをグループ化したり、タグ付けしたりする機能が組み込まれています。

タクソノミー (一般), 物事や概念の分類の実践と科学(研究)、およびそのような分類の基礎となる原理を含む。

Wikipedia

タクソノミーをサイトで利用するには、いくつかの重要なポイントがあります。

  1. site.yaml に、タクソノミータイプのリストを定義します。
  2. ページを、適切なタクソノミータイプに値で割り当てます。

タクソノミーの例

例を挙げて説明するのが一番わかりやすいでしょう。例えば、簡単なブログを作成するとします。このブログでは、投稿を作成し、特定のタグに割り当ててタグクラウドを表示させることができます。また、複数の作者がいて、それぞれの投稿を作者に割り当てたいと思うかもしれません。

Gravでこれを実現する手順は簡単です。Grav は、system/config フォルダにある site.yaml ファイルをデフォルトとして提供します。デフォルトでは、カテゴリと タグの2つのタクソノミータイプが定義されています。

taxonomies: [category,tag]

タグはすでに定義されているので、作者を追加するだけです。これを行うには、user/config フォルダに新しい site.yaml ファイルを作成し、次の行を追加するだけです。

taxonomies: [category,tag,author]

Grav のデフォルトのタクソノミーを上書きして、ページをこれら 3 つのタクソノミーのいずれかに割り当てられるようにします。

---
title: Post 1
taxonomy:
    tag: [animal, dog]
    author: ksmith
---

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

別の方法としては、以下のようなものがあります。

---
title: Post 2
taxonomy:
    tag: [animal, cat]
    author: jdoe
---

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

YAML 設定を見ればわかるように、各ページは usersite.yaml 設定で定義したタクソノミーの種類に 値を割り当てています。この情報はページが処理されるときに Grav に使われ、定義したタクソノミーをもとにページを見つけるために使うことができるようにする、タクソノミーマップを作成します。

ページは、site.yaml で定義したすべてのタクソノミーを使用する必要はありませんが、使用するタクソノミーを定義する必要があります。

テーマ内では、taxonomy.findTaxonomy() を使って、ksmith によって書かれたページを探し、繰り返し表示することで、簡単に一覧を表示することができます。

<h2>Kevin Smith's Posts</h2>
<ul>
{% for post in taxonomy.findTaxonomy({'author':'ksmith'}) %}
    <li>{{ post.title|e }}</li>
{% endfor %}
</ul>

配列/ハッシュを用いるなどして、複数のタクソノミに基づく高度な検索を行うこともできます。

{% for post in taxonomy.findTaxonomy({'tag':['animal','cat'],'author':'jdoe'}) %}

タグが animal と cat 、 作者が jdoe に設定されているすべてのページを探します。基本的に、これは Post 2 を抽出します。

どちらかの項を含むコレクションが必要な場合は、配列の後に 'or' パラメータを追加します。

{% for post in taxonomy.findTaxonomy({'tag':['dog','cat']},'or') %}

タグが 犬 または 猫に設定されているすべてのページを抽出します。

Taxonomy based Collections

We covered this in an earlier chapter, but it is important to remember that you can also use taxonomies in the page headers to filter a collection of pages associated with a parent page. If you need a refresher on this subject, please refer back to that chapter on taxonomy collection headers.

Adding Custom Taxonomy Values in Default and Options

You can use the format below in blueprints to override the Default and/or Options taxonomies. An important note here is that if you are using this method to override both of these attributes, you should add validate: type: commalist, otherwise it may not function as desired.

taxonomies:
  fields:
    header.taxonomy:
      default:
        category: ['blog','page']
        tag: ['test']
      options:
        category: ['grav']
      validate:
        type: commalist

オリジナル : https://learn.getgrav.org/17/content/taxonomy