[Hugo] 最新記事を特定ページのみに表示する

Hitoshi Arakawa | 2024/05/19 Sun 03:41

Hugo で Hugo Profile というテーマを使ったページを作った。

GitHub - gurusabarish/hugo-profile: A highly customizable and mobile first Hugo template for personal portfolio and blog.
https://github.com/gurusabarish/hugo-profile/tree/master?tab=readme-ov-file

Hugo Profile テーマはブログの「最近更新した記事」をページ下に表示できる(表示数は config.yaml で指定)。

問題はその最新記事の一覧が表示させたくないページにまでに表示されてしまうことだ。例えば自分で作成した一般ページ(ブログ以外のページ)には最新記事一覧を表示させたくない。

ブログには記事一覧ページと個別記事ページがあるが、記事一覧ページにも最新記事一覧表示され情報がかぶってしまう。

僕は最新記事を、トップページおよび個別の記事ページ、タグ一覧ページにのみに表示させたい。これを解決する方法を見つけたのでメモしておく。

環境:
・macOS Ventura 13.5(英語環境)
・Hugo v0.119.0
・Hugo テーマ:Hugo Profile

{Hugo のプロジェクト名}/themes/hugo-profile/layouts/partials/sections/footer/index.html で以下のように修正すればいい。

変更前:
    <!-- Recent blog posts -->
    {{- partial "sections/footer/recentBlogPosts.html" . -}}

変更後
{{ if (or (and (eq .Type "blogs") (isset .Params "title")) (eq .Type "tags") (.IsHome)) }}
    <!-- Recent blog posts -->
    {{- partial "sections/footer/recentBlogPosts.html" . -}}
{{ end }}

つまり、ブログの個別ページの指定は Type が blogs であり、ページ内に title というパラペーターが含んでいることを利用している。タグ一覧ページは単に Type で tags を指定している。トップページは .IsHome だ。それらを or で繋げればいい。

参考:
How to use partials for only certain pages - support - HUGO
https://discourse.gohugo.io/t/how-to-use-partials-for-only-certain-pages/14903/2

Hugo if文とfor(renge)文の書き方まとめ #HTML - Qiita
https://qiita.com/takeshi_du/items/09b2dce8ef4fca4a9985

バスカヴィル家の犬 【新訳版】 シャーロック・ホームズ・シリーズ (創元推理文庫) | アーサー・コナン・ドイル, 深町 眞理子 | 英米の小説・文芸 | Kindleストア | Amazon
https://amzn.to/4bsGeVU