anz blog

Zolaで日本語タグのURLを生成する方法

2024-02-05 #Zola

SSG である Zola でブログを構築したときに、日本語タグをつけた場合そのリストのURLが意味がわからないローマ字に変換されてしまうのを、日本語のままで生成されるように設定できる方法があったのでそのメモ。

問題

例えば記事に「個人開発」というタグをつけた場合、そのタグの記事リストにアクセスするURLは https://blog.anzfactory.xyz/tags/ge-ren-kai-fa/ になります。
「個人開発」の部分が、 "ge-ren-kai-fa" に変換されて生成されるのです。
これをうけて自分でこの部分を設定できたらな…と構築当時嘆いていたのを覚えています。
確か当時は、自分で slug を対応させる形で設定できたらと考えていたのですが、それとは少しちがうけれど、設定されたタグのままアクセスできるように生成されるという方法はありました。

やりかた

要は、設定したタグなどが slug 化されて生成されるので、その slug 化を止めてしまえばいいということでした。
config.toml の設定に下記のようについきすることでできます。

... 省略 ...

taxonomies = [
  { name = "tags", feed = true }
]

[slugify]
tags = "off"

... 省略 ...

slugify の設定がそれに当たります。ここで tags とありますが、これは共通ではなく各々の taxonomies での書き方によります。
僕は taxonomies で tags という形で設定しているので slugify で指定するときも tags ですが、taxonomies で categories とか、 writers とかそんな感じで設定していたら、それぞれを slugify で設定することになります。
個別設定がめんどい場合は、slugify のところで taxonomies = "off" としたら taxonomies で設定されている全部を一括で無効化することもできます。

この設定をした場合、先の例で上げた「個人開発」というタグの記事リストにアクセスするURLが https://blog.anzfactory.xyz/tags/個人開発/ になり、意味がわかるようになります。

追加の問題点

これで完全に望んでいる状態になったかと思いきやそうでもなくて、slugify を無効化した弊害として、設定したそのままの文字列で生成されるというのがあります。
(そういう設定をしたからそれはそうなのですが)
何が問題かというと、今までは tag に Swift と設定した場合そのタグの URL は /tags/swift/ でした。これが slugify を無効化すると /tags/Swift/ になります。
ぶっちゃけ URL は大文字小文字区別しないのでこれによる弊害は特にはないかと思うけど、URL は小文字宗派の僕としては許容できない問題でした。

ということで、結局僕は slugify は有効のまま、何も以前と設定を替えないままで行くことにしました(結局なにも変えていないオチ…笑)

参考

Configuration - Zola