HUGOでタグに日本語を使用する
日本語のタグを使用すると
日本語のディレクトリが作成され、URLが日本語になります。
日本人には日本語の方がわかりやすいです。SEOにも影響がないようなので日本語でもいいかなと思いました。
しかし、URLを共有やコピー&ペーストされたときにエンコードされることがあります。
エンコードされるのを防ぐことはできないので、アルファベットでURLを作成することにします。
slug でURLを変更
Hugo には、slug の機能が用意されています。 この機能を使用して日本語のURLをオーバーライドしてアルファベットに変更します。
appears as the tail of the output URL. A value specified in front matter will override the segment of the URL based on the filename.Front Matter
Taxonomies の slug 設定
こちらの記事 「Taxonomiesを使用する」に書いたように、Taxonomiesには3つの要素があります。
- Taxonomy: 分類方法
- Term: キー
- Value: コンテンツ
”日本語”というタグを記事1に使用する場合は、下記のようになります。
- Taxonomy: Tag
- Term: 日本語
- Value: 記事1
“日本語"というTermのページに、“japanese"という slug の設定をします。
Termのページファイル作成
下記の場所にファイルを作成し、「Front Matter」を設定します。
“/content/tags/日本語/_index.ja.md”
|
|
もう一つ同じ場所にファイルを作成します。
“/content/tags/日本語/_index.md”
|
|
タグの Permalink
タグの _index.md で slug 設定をしたので、タグページのURLとタグのリストページからのタグページへのリンクはアルファベットになりました。
コンテンツページからタグページへのリンクは日本語のままです。コンテンツページの日本語のタグ情報からタグのページを取得して Permalink をリンクへ設定します。
Permalink を slug に変更
Siteのconfigファイルを変更して、tags の permalinks を設定します。(jsonで記載しています。)
|
|
テンプレートを変更
single.html
下記のコードは、コンテンツのレイアウトに使用するタグのリンクを出力する partialページです。 タグページへのリンクは .Permalink へ変更します。
|
|
term.html
下記のコードは、termのレイアウトです。
.Title ではなく、.Data.Term へ変更します。同様の変更を terms.html にも行います。
|
|
2022-06-06 追記
termのテンプレートではなくsingle(コンテンツ用)のテンプレートが使用されて、タグを使用しているコンテンツのリストが表示されない。
Variable を確認すると下記のようになっていた。
Kind がpage
Type が tags
Section が tags
Kindが「term」になっていてほしいのだけど、pageになっている。
回避する方法ないかな。
2023-04-02 追記
termの _index.md の「Front Matter」に kind を指定することでテンプレートを変更できたので、追記しました。