[Hugo] 特定の Content Type に該当する記事だけをリスト表示したい

ブログを始めるにあたり、とりあえず免責事項の記事を書いてみた。 Hugo を立ち上げると、何やらブログトップの “Latest Essays” に “免責事項” の文字が…(ついでに “About” も)。 これはかっこ悪い。ということで、 “Latest Essays” として表示される記事の Content Type を制限することにした。

これはダサい

これはダサい

詳しい説明はすっ飛ばして答えを書いてしまうのだけれど、記事リストを取得してイテレートしていたテンプレート(layouts/index.html)を下のようにした:

<h1>Latest Essays</h1>
{{ range (where .Site.RegularPages "Section" "essays")}}
<article>
  <header>
    <h2><a href="{{.Permalink}}">{{.Title}}</a></h2>
  </header>
  <aside class="meta">
    {{ .Date.Format "Jan 02, 2006" }} • {{ .ReadingTime }} min
  </aside>
  <p>{{ .Summary }}</p>
</article>
{{ end }}

ヒントとなったのは、リスト下部に表示されている “View All N Essays” の文言。 期待する挙動は、ここの N に該当する数と “Latest Essays” に表示される数が合っていること(“About” と “免責事項” しか書いていない今の状況ではまだ Essay はない)なので、ここの数字を生成しているスニペットをそのまま利用した。

テストのために適当な Essay を 2 つ追加するとこんな感じ:

“About” と “免責事項” が消えてくれた

“About” と “免責事項” が消えてくれた

というわけで、無事、希望通りの挙動にできた。


comments powered by Disqus