Hugoでブログやメディアサイトを作るなら、記事の中身を表示するための仕組みが不可欠です。

この記事では、ブラウザで各記事を表示するための「個別ページテンプレート(page.html」の作成方法と、Hugoのコンテンツフォルダ(content/)にMarkdown形式で新しい記事を追加する基本手順を解説します。

0. 📂 content/ フォルダについて

まず、作業場所の content/ フォルダについて知っておきましょう。
ここは、「サイトの原稿(記事)」を置く場所 です。

Hugoは、このフォルダに入っているMarkdownファイル(.md)を見つけて、自動的にWebページ(.html)に変換してくれます。

記事を追加する方法は2つあります:

  1. コマンドで作る: hugo new content ... コマンドを使う(Front Matterなどが自動で入るので楽!)。
  2. ファイルを置く: メモ帳などで書いた .md ファイルを、直接このフォルダにコピーしてもOK。

今回は、Hugoの便利さを体験するために「コマンド」で作ってみましょう。

1. テスト記事を作ってみる

その前に、表示するための記事がないとテストできません。
コマンドで記事を作成しましょう。

hugo new content posts/my-first-post.md

content/posts/my-first-post.md ができたはずです。
中身を適当に書いて…と言われても、書き方が分かりませんよね。
以下の記事で、記事ファイルの書き方を解説しました!

» 【Tips】記事の書き方入門:MarkdownとFront Matter

記事を書いたら、サーバーを起動して確認します。
このとき、下書き記事(draft: true)を表示するために -D オプションを付けるのがコツです。

hugo server -D

サーバーが起動したら、ブラウザで以下のURLにアクセスしてみてください。

http://localhost:1313/posts/my-first-post/

(Topページからリンクを辿ってもいいですが、まだリンクがない場合もあるので直打ちが確実です!)

» 【Tips】これだけは覚えよう!Hugoのよく使うコマンド集

2. 個別ページ:page.html

記事を表示するテンプレートを作ります。
themes/my-diy-theme/layouts/page.html を作成して、以下を記述します。

{{ define "main" }}
<article>
    <!-- 記事のタイトル -->
    <h2>{{ .Title }}</h2>
    
    <!-- 投稿日 -->
    <div class="meta">
        <time>{{ .Date.Format "2006-01-02" }}</time>
    </div>
    
    <!-- 記事の本文 -->
    <div class="content">
        {{ .Content }}
    </div>
</article>
{{ end }}

シンプルですね!
{{ .Content }} という部分に、Markdownで書いた記事の内容がHTMLに変換されて入ります。

ここで出てきた {{ .Title }}{{ .Content }} などの「ふしぎな変数」についてもっと詳しく知りたい方は、こちらの解説記事をどうぞ。

» 【Tips】テンプレート変数の基礎とよく使う関数

記事投稿と個別ページテンプレートの基本をマスターしよう

単なるテキストだったMarkdownファイルが、page.html というテンプレートを通すことで、見出し・日付・本文といった要素を持つ立派なWebページとして表示されるようになりました!

ここまでのステップで、「サイトの構築」「共通レイアウトの作成」「記事ページの作成」という、Hugoを使ったWebサイト制作の基本サイクルが一通り完成しました。機能面は揃ったので、次は最後の仕上げとなる「デザイン(CSS)」によるカスタマイズに進みましょう!