ブログのコンテンツが増えてくると、トップページが「単なる新着記事の羅列」だけでは少し味気なく感じてくるものです。
今回は、トップページ専用のテンプレートファイルである layouts/index.html をカスタマイズして、「このサイトがどのような情報を発信しているのか?」 が一目で伝わる魅力的な「サイトの顔」を作っていく手順を解説します!
目標:こんなトップページにする
- ヒーローエリア: 画面の一番上に、サイト名とキャッチコピーをドーンと表示!
- 導入メッセージ: 「Hugoとは?」などの小話や、最初に読んでほしい記事へのボタンを配置。
- 最新記事リスト: 最近のエントリーを表示。
1. テンプレートの修正
themes/my-tutorial-theme/layouts/index.html を開いて、中身をガラッと書き換えてみましょう。
{{ define "main" }}
<!-- ヒーローエリア: サイトの第一印象を決める大事な部分 -->
<div class="hero">
<h1>{{ .Site.Title }}</h1>
<p>完全オリジナルのHugoテーマを作ってみませんか?</p>
<!-- 小話&導入 -->
<div style="margin-top: 20px; font-size: 0.95rem; color: #555;">
<p>HugoはGo言語で作られた爆速の静的サイトジェネレーターです。<br>
このサイトは、ゼロからテーマを作る過程を解説するチュートリアルサイトです。</p>
</div>
<!-- Basicカテゴリーへの誘導ボタンエリア -->
<div style="margin-top: 30px;">
<p style="font-weight: bold; color: #333; margin-bottom: 10px;">
\ たった5ステップで完成! /
</p>
<!-- .Site.GetPage で確実にパスを取得 -->
<a href="{{ ( .Site.GetPage "/categories/basic" ).RelPermalink }}" style="display: inline-block; background-color: #ff6b6b; color: #fff; padding: 12px 30px; text-decoration: none; border-radius: 30px; font-weight: bold; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
🔰 オリジナルテーマ作成ツアーへ出発
</a>
<p style="font-size: 0.9rem; color: #666; margin-top: 15px; line-height: 1.6;">
インストールからテーマ自作、そして画面表示まで。<br>
最短ルートで「自分のテーマ」を完成させましょう!
</p>
</div>
</div>
<!-- 最新記事エリア -->
<div class="latest-posts">
<h2>Latest Posts</h2>
<ul>
{{ range first 5 .Site.RegularPages }}
<li>
<!-- 日付も見やすく配置 -->
<span class="date">{{ .Date.Format "2006.01.02" }}</span>
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
</li>
{{ end }}
</ul>
<!-- アーカイブへのリンク -->
<div style="text-align: right; margin-top: 10px;">
<a href="{{ ( .Site.GetPage "section" "posts" ).RelPermalink }}">すべての記事を見る →</a>
</div>
</div>
{{ end }}
ポイント
- 誘導ボタン: 初めて来た人に見てもらいたいページ(ここでは「Basic」カテゴリー)へのリンクを作りました。
- リンクの修正:
"/categories/basic"などの直書きよりも、{{ .Site.GetPage ... }}を使うと、Hugoが確実に正しいURLを見つけてくれます(404エラー防止!)。
2. CSSでおめかし
テンプレートを変えただけでは見た目が地味なので、static/css/style.css に魔法(スタイル)をかけます。
/* ヒーローエリア */
.hero {
background-color: #e9ecef; /* 薄いグレーの背景 */
padding: 60px 20px; /* 余白をたっぷり */
text-align: center; /* 真ん中寄せ */
border-radius: 8px; /* 角丸 */
margin-bottom: 40px;
}
.hero h1 {
font-size: 3rem; /* 文字を大きく! */
margin-bottom: 20px;
color: #333;
}
.hero p {
font-size: 1.2rem;
color: #666;
}
/* 最新記事リスト */
.latest-posts ul {
list-style: none; /* 点々を消す */
padding: 0;
}
.latest-posts li {
padding: 10px 0;
border-bottom: 1px solid #eee; /* 下線で区切る */
display: flex; /* 横並びにする */
justify-content: space-between; /* 両端に配置 */
align-items: center;
}
.latest-posts .date {
font-size: 0.9rem;
color: #999;
margin-right: 15px;
min-width: 90px; /* 日付の幅を確保 */
}
3. 確認してみよう
hugo server でトップページ (http://localhost:1313/) にアクセスして確認してみましょう。
単なる記事リストだった画面が、プロが作ったランディングページのような華やかな見た目に変わったはずです!✨
トップページを作り込んで読者を惹きつけよう
index.html はサイトを訪れた人が最初に目にする「顔」となる非常に重要なテンプレートです。
ベーステンプレート(baseof.html)の枠組みを活かしつつ、ヒーロー画像を追加したり、プロフィール紹介文を書いたり、おすすめカテゴリーへの導線を太くしたりと、index.html 内はあなたの自由なキャンバスとして使えます。
ファーストビューで読者の心を掴めるよう、ぜひ様々なレイアウトやデザインアイデアを試してオリジナリティ溢れるトップページを完成させてください!



