Hugo のテーマを自作した

今まで使っていたテーマの Pickles はシンプルで気に入っていたのだが、絶対使わなそうな js の読み込みがあるのが気になってたのと、カスタマイズの仕方がよくわからなかったので自作してみることにした。

実は数年前も自作してみようと思って完全に挫折したのだが、今回は挫折しなかった。
多少 Go 言語のことを勉強したとはいえ Template については全くの無知といっても過言ではなかったのだけれど、「Hugo テーマ自作入門」みたいな記事に頼らず公式サイトを丁寧に読んだのがよかったのかもしれない。
ということで Hugo テーマ自作入門みたいな記事は書かない。公式サイトが最強なので公式サイトを読むのが最善。

なお CSS を極力書かずにユーザーエージェントのデフォルトスタイルに委ねる方針にしたのでブラウザによって見え方が違うと思うが、だいたいシンプルな 1 カラムレイアウトなので大丈夫だろうと思っている。

配色は Water.css というやつを大いに参考にさせていただいた。(正直丸パクリしようかと思ったがちょっと変えてある。)
レイアウトは自分でやりたかったので Water.css を使わなかったのだけれど、全然こだわりがなければそのまま使わせていただきたいくらい素敵なものなので使えるときは使いたい。

今回テーマ自作ついでに「ログ」というセクションを追加した。今書いているのがログである。(通常のブログ記事は /posts/ というURLで「記事」と呼ぶことにする。)
私としての記事とログの違いが何かというと、今は亡き Qrunch という Qiita の代替サービスで採用されていた考え方そのものである。
まあメモみたいなもの。

流石にテーマの機能としてログという概念を取り込むのはあまりに押し付けが過ぎるので、ログの検索避けはカスタマイズで対応した。HEAD 内に

{{ if or .IsPage .IsSection }}
    {{ if eq .Section "logs"}}
        <meta name="robots" content="noindex">
    {{ end }}
{{ end }}

これで /logs/ というURL配下のページに noindex のメタタグが書かれるはず。テーマ自作したおかげでカスタマイズも捗るというものである。

テーマは今後しばらく変なところを直したらそのうち公開はするかもしれないけど、公式に申請するつもりはない。
Hugo には Taxonomy という概念があって、一般に言う「タグ」や「カテゴリー」みたいなのを好きなように定義して増やせるという拡張性が高いものなのだが、私は「タグ」にしか対応していないからである。
公式に申請する場合は hugoBasicExample というのがある程度動かせなきゃいけないらしく、そのためには Taxonomy に対応しないといけないと思う。

ログを新設したので、今後は記事を書くほどのことがなくても何らか書いていきたい。

今回は以上。