Rindrics Mumbles

[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 つ追加するとこんな感じ:

&ldquo;About&rdquo; と &ldquo;免責事項&rdquo; が消えてくれた

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

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