Zolaでtaxonomyの説明を付け加えた

Taxonomyの項目名だけでは説明が足りない場合がある。僕の場合は作品名に作者表示を追加したくて困った。Can we add extra data to TaxonomyTerm? - Feature requests - Zolaで大体紹介されているので、それを見て僕が取った方法を紹介だけする

とりあえずtaxonomy名をsourcesとし、あるsourceの名をoneとして話を進める。最初にpublic/sources/one/index.htmlというページをcontent/sources/one.mdを通して通常の記事として作成し、さらにそれをtemplates/sources/single.htmlで生成されたpublic/sources/one/index.htmlで上書きするものだ。上書きの仕様は把握していないのでいずれ動かなくなるかもしれないが、ゴミを残すとかdraft=trueにするとかで上書きは回避できるのでそこまで気にしなくてよい

説明を強制するタイプのものなので「必要なものにだけ説明をつける」ものでないこと、上書きする関係上実際にoneというsourceが存在しなければゴミが残ることに注意

方法

まずcontent/sources/_index.mdを作成し、次のように記入する:

+++
title = "原作"
sort_by = "date"
template = "dummy.html"
page_template = "dummy.html"
+++

sort_bytemplate, page_templateはどうせ使わないので適当なものを指定しておく。content/sources/one.mdを適当に記入し、templates/sources/single.html

{%- set page = get_page(path=[taxonomy.slug,"/",term.slug,".md"] | join) %}
{{ page.content | safe }}

とすれば内容が表示されるので、あとはtermとかを使ってページを書いていけばいい

終わり

とりあえずこれで出来る

最初のCan we add…の「orphan pages」はtemplates/sources以下に置いたただの静的mdファイルのことかもしれない。markdown filterが使えるからload_dataで読んでから変換すればよい。ただこの方法だとshortcodesで出来ることが限られてしまう。実際にやってみたが、今回はmarkdown filterの中でconfig.base_urlを参照しようとして失敗した

それでは