Hugo: 記事一覧を「タイル(カード)形式」にする
ホームやセクション一覧のテンプレートを上書きします。最小構成はこれだけ。
layouts/_default/list.html
(セクション一覧・タグ一覧などに効く)
{{ define "main" }}
<main class="container">
<div class="card-grid">
{{ range .Paginator.Pages }}
<article class="card">
<a href="{{ .RelPermalink }}">
{{/* サムネイル優先度: params.thumbnail → resources */}}
{{ $thumb := .Params.thumbnail }}
{{ if not $thumb }}
{{ with .Resources.GetMatch "featured*" }}{{ $thumb = .RelPermalink }}{{ end }}
{{ end }}
{{ if $thumb }}<img src="{{ $thumb }}" alt="" class="card-thumb">{{ end }}
<h2 class="card-title">{{ .Title }}</h2>
<p class="card-summary">{{ with .Summary }}{{ . | plainify }}{{ end }}</p>
<time class="card-date" datetime="{{ .Date }}">{{ .Date.Format "2006-01-02" }}</time>
</a>
</article>
{{ end }}
</div>
{{ template "_internal/pagination.html" . }}
</main>
{{ end }}
簡易CSS(好きな場所でOK。例:assets/css/cards.css
を Hugo Pipes で読み込み)
.container{max-width:1100px;margin:0 auto;padding:1rem}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1rem}
.card{border:1px solid #ddd;border-radius:12px;overflow:hidden;background:#fff}
.card a{display:block;text-decoration:none;color:inherit;padding:0}
.card-thumb{width:100%;height:160px;object-fit:cover;display:block}
.card-title{font-size:1.1rem;font-weight:700;padding:0.75rem 1rem 0}
.card-summary{padding:0.25rem 1rem 0.5rem;color:#555}
.card-date{display:block;padding:0 1rem 1rem;color:#888;font-size:0.9rem}
layouts/partials/head.html
などで読み込み(Hugo Pipes例)
{{ $cards := resources.Get "css/cards.css" | resources.Minify | resources.Fingerprint }}
<link rel="stylesheet" href="{{ $cards.RelPermalink }}">
ホームの一覧だけタイルにしたい場合は、
layouts/index.html
を上記のlist.html
と同様の中身で作れば OK です。