Hugo の仕組みでは、1 つのタクソノミーに割り当てられるタームの数を制限することはできません。 ここでは、複数のタームを割り当ててしまった場合に、エラー表示を行う方法を紹介します。
1つの記事ページに複数のタグを付けるのはよくあることですが、Web サイトのポリシーによっては、1 つの記事に付けられるカテゴリーは 1 つまでに制限したい、ということがあるかもしれません。 Hugo のデフォルトの仕組みでは、そのような制限はできないのですが、複数のカテゴリが付けられた記事を表示したときに、ログとページ上にメッセージを表示することはできます。
下記のシングルページテンプレートでは、categories
タクソノミーに 2 つ以上の値(ターム)が設定されている場合に警告メッセージを出力しています。
errorf
関数を使ってテキスト出力を行うことで、画面上への出力と同時に、コンソール上にもエラーメッセージを出力することができます。
☝️ ワンポイント
len .Params.categories
を実行するときに、.Params.categories
が存在しないと nil dereference のエラーが発生してしまいます。
そのため、最初に if .Params.categories
という存在チェックを入れています。例えば、記事ページの先頭のフロントマターで、下記のように複数のカテゴリを割り当てるような記述をすると、上記の警告メッセージが表示されます。