# 単体ページしたい(``/layouts/_default/single.html``)
```html
{{ define "main" }}
{{ .Title }}
{{ $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }}
{{ $dateHuman := .Date | time.Format ":date_long" }}
{{ .Content }}
{{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }}
{{ end }}
```
```html
{{ define "main" }}
{{ end }}
```
単体ページで適用されるテンプレートです。
[ベーステンプレート](./hugo-layouts-baseof.md)で定義した``main``ブロック(``{{ define "main"}}``)の中身を書いたサンプルです。
## タイトルを表示したい
```go
{{- .Title -}}
```
```html
ページのタイトル
```
ページのタイトルは``h1``タグで表示します。
クラス名は、利用するCSSフレームワークなどに合わせて適当につけておきます。
## 公開日を表示したい
```go
```
```html
```
日時や時刻を表示するための[timeタグ](https://developer.mozilla.org/ja/docs/Web/HTML/Element/time)を使います。
``datetime``属性を使って検索エンジンが理解しやすいようにしておきます。
Hugoの日付に関係するページ変数は、``.Date``、``.PublishDate``、``.Lastmod``、``ExpiryDate``の4種類あります。それぞれの変数のfrontmatter変数との紐付けは[カスタマイズ](https://gohugo.io/getting-started/configuration/#configure-dates)できます。
:::{note}
Hugo(というかGoテンプレート言語)の日付フォーマットはなかなか初見殺しだと思います。
よくある山田フォーマット(``YYYY年mm月dd日 HH:MM:ss+Z``)ではなく、``2006年01月02日 15:04:06+07:00``と書きます。
Hugoを使い始めたころ、この日付にフォーマット指定の意味があると思わず、日付フォーマットが反映されないなぁ?としばらくハマりしました。
フォーマット指定の詳細は[Go言語のソースコード](https://github.com/golang/go/blob/master/src/time/format.go)を確認してください。
:::
## 下書きを表示したい
```html
{{ if .Draft}}
下書き
{{ i18n "draft_mode" }}
{{ end }}
```
``.Draft``のページ変数でページの状態を指定できます。
既存のテーマではあまり見当たらないのですが、下書き状態であることが一目でわかると便利だと思います。
多言語サイトの場合は、言語ごとに表記を変更できるようにしておくのもよいと思います。
## カテゴリーを表示したい
```html
```
```html
{{ .Title }}
🗂️ カテゴリ名
```
記事やページのカテゴリーを表示します。
## タグを表示したい
```html
```
```html
```
:::{hint}
「カテゴリー」と「タグ」の使い分けに関する、個人的な見解です。
カテゴリーは🗂️フォルダ分けと同じなので、記事に対してひとつだけ、
タグは🏷️ラベル付けと同じなので、記事に対して複数設定できる、というように使い分けています。
Hugoのタクソノミー機能には「ひとつだけ」に制限する機能はないため、
カテゴリーは「セクション」(=ディレクトリ名)、
タグは「タクソノミー」で設定するように設計するのがよいと考えています。
:::
## 本文したい
```html
{{ .Title }}
{{ .Content }}
{{ range .Page.Resources }}
{{ .Title }}
{{ .Content }}
{{ end }}
```
Leaf Bundle