NKSSG
NakaKen Static Site Generator

タグやカテゴリーを設定しよう

🚕

NKSSG では、記事を分類するために タクソノミー (taxonomy) を使うことができます。タグやカテゴリーがタクソノミーの例です。

ここでは、タグやカテゴリーの使い方、他のタクソノミーの設定方法などを説明していきます。

タクソノミーは何のためにある?

タクソノミーがあると、記事をいろいろな切り口で分類することができます。

例えば、プログラミングの記事が多いサイトがあるとしましょう。このサイトに来た人の中には、「Python について書かれた記事だけを見たい」という人もいるでしょう。こうした場合、Python に関する記事の一覧が表示できると便利です。

タクソノミーがあれば、いろいろな切り口で記事の一覧を簡単に作ることができます。サイトを見に来た人にとって、記事が探しやすくなります。

また、タクソノミーを見れば、「このサイトはどういうテーマを扱っているのか?」がわかるので、サイトの説明にもなります。

タクソノミーとターム

タクソノミーは分類方法・分類名のことで、タームはその分類に使われる項目・項目名のことです。

例えば、Python について書かれた記事には、「プログラミング」や「Python」といったタグがついているかもしれません。この「タグ」がタクソノミーの例で、「プログラミング」「Python」がタームの例です。

デフォルトのタクソノミー

NKSSG のインストール直後では、tagcategory という2つのタクソノミーが登録されています。また、これら以外にも、あとで説明する方法で、好きなタクソノミー・タームを追加することができます。

tag(タグ)

タクソノミー tag は、記事を分類するためのラベルのようなものです。キーワードだと考えてもいいでしょう。

WordPress の tag, post_tag (タグ)に対応しています。

category(カテゴリー)

タクソノミー category は、記事をグループ分けするために使う分類です。

categorytag も、記事を分類する点では同じです。ただ、イメージでいうと、 category は 📁フォルダでの分類、 tag は 🏷ふせんでの分類に対応していると考えるとわかりやすいでしょう。

タグやカテゴリーのつけ方に、厳密なルールはありません。ただ、一般には、タグに比べてカテゴリーの数は少なく、1つの記事に設定するカテゴリーの数も少ないです。カテゴリーは、広い範囲を指す言葉が選ばれます。

タクソノミーの設定方法

タクソノミーやタームを使うには、設定ファイルへの登録と、各記事への設定の両方が必要です。以下では、この2つについて説明します。

設定ファイルへのタグなどの登録

まず、タクソノミーやタームをサイト内で使うために、nkssg.yml ファイルで設定します。デフォルトでは次のようになっています。一部だけを抜き出しています。

taxonomy:
  - tag:
    - tag1

  - category:
    - cat1

taxonomy の後に、tagcategory という2つの設定がリストになっています。また、それぞれのタクソノミーに、タームのリストが設定されています。

この設定には YAML 記法を使っています。後の説明でも設定の仕方は書いていますが、YAML 記法についてまとめて知りたい人は、次の記事を参考にしてください。

YAML YAML

タグやカテゴリーにタームを追加したい場合は、同じようにリストに値を追加します。例えば、次のようにします。

taxonomy:
  - tag:
    - tag1
    - tag2

  - category:
    - cat1
    - cat12

こうすると、追加した値を名前(name) に持つタームが登録されます。

さらに、各タームには、スラッグ(slug) や親(parent) も設定できます。スラッグは URL に使います。親は階層化するために使います。

taxonomy:
  - tag:
    - tag1
    - tag 2:
        slug: tag2

  - category:
    - cat1
    - cat12:
        parent: cat1

ターム名の後にコロンがついていることに注意しましょう。次に紹介する「タクソノミーの登録」の例も参考にしてみましょう。

メモ

WordPress では、タグは階層化できませんが、NKSSG ではタグにも親を設定することができます。NKSSG では、タグとカテゴリーで設定できる項目に差はありません。

インストール直後は、入力例としていくつかのタームが登録されています。邪魔な場合は削除しても構いません。その後、自分の好きなタームをタグやカテゴリーに登録しましょう。

設定ファイルへのタクソノミーの登録

先ほどは、既存のタクソノミーである tag と category にタームを追加する方法を見ました。ここでは、さらにタクソノミー自体を追加する方法を見てみます。

例えば、"国" (country) というタクソノミーを追加し、いくつかのタームを設定してみます。次のように追加すればいいです。

taxonomy:
  (タグとカテゴリの設定は省略)
  - 国:
    - 日本
    - アメリカ
    - 中国

こうなります。「国」(タクソノミー名)の後に、半角コロンがあることに注意しましょう。

メモ

これは、WordPress でいう「カスタムタクソノミー」に対応しています。

これでタクソノミーとタームの設定ができていますが、これだけだと、アーカイブページの URL に日本語が含まれてしまいます。URL 用の表示設定を行うために、slug を設定することができます。次のようにします。

taxonomy:
  - 国:
    - slug: country
    - 日本:
        slug: japan
    - アメリカ:
        slug: usa
    - 中国:
        slug: china

タクソノミー名、ターム名の後に、コロンが入っているところに注意しましょう。

このように設定した場合、/country/ という URL にアクセスすると、「国」というタクソノミーを設定した記事一覧が表示されます。また、/country/japan/ という URL にアクセスすると、フロントマターで「国: ["日本"]」と設定した記事の一覧が表示されます。

階層化することもできます。少し複雑になりますが、次のようにします。

taxonomy:
  - 国:
    - slug: country
    - アジア:
        slug: asia
    - 日本:
        slug: japan
        parent: アジア
    - アメリカ:
        slug: usa
    - 中国:
        slug: china
        parent: アジア

アジアというタームを追加し、日本と中国をその下に配置するようにしました。階層化するには、それぞれの親を指定するようにします。親(parent) は、いるとすれば必ず1人なので、子がだれかを指定するよりも楽です。parent には、slug ではなく、タームの名前を指定しましょう。

各記事へのタクソノミーの設定

ここまでが、タクソノミーの登録方法です。これで、各記事でタグやカテゴリー、タクソノミーが使えるようになります。

各記事にタクソノミー・タームを設定するには、次のようにします。

---
title: "東京旅行1日目"
tag: ["travel"]
国: ["日本"]
---

フロントマターで、上のようにします。こうすると、/tag/travel/ という URL にアクセスすると、この記事が一覧に載ってきます。

また、nkssg.yml で次のように設定している場合

taxonomy:
  - 国:
    - slug: country
    - アジア:
        slug: asia
    - 日本:
        slug: japan
        parent: アジア

/country/japan/ だけでなく、/country/asia/ にもこの記事が一覧に載ってくることになります。各タームのアーカイブページには、そのタームかその子孫のどれかに含まれる記事すべてが一覧に載ります。

なお、nkssg.yml にタクソノミーの設定をしていない場合は、各記事にタクソノミーの設定をしても、アーカイブは作成されません。また、親子の関係がおかしい場合(parentで設定したタームが存在しない場合)も、アーカイブは作られないので注意しましょう。

各記事にタクソノミーを設定したのにうまく反映されない場合は、nkssg.ymlでの設定がうまくいっているか、確認しましょう。