最近、 rust を再開したので、 Static Site Generator を go 製の hugo から rust 製の zola に変更してみた。

Zola
Everything you need to make a static site engine in one binary.
Zola favicon https://www.getzola.org/

hugo のからの引っ越し

zola インストール

初期化

config.toml を hugo 版から zola 版に書き換える。

最低限 base_url。

プレビューしてみる

$ zola serve

一部の記事でエラーが出る。

Reason: There is a link that is missing a URL

どの記事がまずいかはわかるが、何行目とか場所はわからないのかしら。 適当になおす。

$ zola check

の方がデバッグ向け。 いくつかなおしたら、エラーは出なくなった。

テンプレートを用意する

Overview | Zola
Everything you need to make a static site engine in one binary.
Overview | Zola  favicon https://www.getzola.org/documentation/getting-started/overview/

に従って基本的なテンプレートを作成。 index.html, section.html, page.html の3種類のテンプレートがサーチされる。 section.html と page.html は、section のフロントマター、 template, page_template で変更できる。

zola の content 構成

section(フォルダ) に page が所属するという構成みたい。 section とうのは単なるフォルダではなくて、folder/index.md もしくは folder/_index.md をさす。

  • root => index.html
    • section
      • _index.md (セクションになる) => section.html
      • page1.md => page.html
      • page2.md => page.html
      • subsection (_index.md が無いのでセクションでは無い) => レンダリングされない
        • page3.md (orphan page) => page.html
        • page4.md (orphan page) => page.html

セクションに所属しない page は orphan page となり、 section.pages のように列挙することができなくなる。 すべてのフォルダに _index.md を配置してセクション化するという設計思想のようだ。

セクションが木構造になっていて、page が leaf になる。

  • section
    • subsections
    • pages

が再帰的に続く。

zola を改造してみた。

orphan page が section.pages に入るようになる。 https://github.com/ousttrue/zola/commit/7842d0b2d05eb15400dbe20b20791b57af077de1

zola 設定 config.toml

Configuration | Zola
Everything you need to make a static site engine in one binary.
Configuration | Zola  favicon https://www.getzola.org/documentation/getting-started/configuration/

Tera テンプレート

tera.netlify.app
tera.netlify.app favicon https://tera.netlify.app/docs

extends

別ファイルを部分的に override する https://tera.netlify.app/docs/#inheritance

include

別ファイルの部品を読み込む https://tera.netlify.app/docs/#include

date format

tera.netlify.app
tera.netlify.app favicon https://tera.netlify.app/docs/#include

とりあえずメンテナンス中・・・

hugo に比べて template の構成がシンプルでわかりやすいような気がする (hugo に慣れているせいかもしれない)。 そもそも hugo の時点でちゃんと管理してなかったので、 ぼちぼち続きをやる。