骨組みしたい(/layouts/_default/baseof.html

<!DOCTYPE html>
<html lang="{{ or site.Language.LanguageCode site.Language.Lang }}"
      dir="{{ or site.Language.LanguageDirection `ltr` }}">
<head>
  {{ partial "head.html" . }}
</head>
<body>
  <header>
    {{ partial "header.html" . }}
  </header>
  <main>
    {{ block "main" . }}{{ end }}
  </main>
  <footer>
    {{ partial "footer.html" . }}
  </footer>
</body>
</html>

hugo new themeコマンドで作成されるスケルトンを使って、独自のテンプレートを設計できます。 /layouts/_default/baseof.htmlは、すべてのページに共通する骨格を定義するテンプレートです。 なるべく具体的に書かないことが大事です。 HTMLタグのセマンティックに沿って並べるのがよいと思います。

表示言語の設定(lang属性

lang属性には、ウェブサイトに書かれている言語、もしくはユーザーが入力すべき言語を設定します。デフォルト値はunknownなので、適切な値を指定することが推奨されています。

多言語サイトの設定に書いたように全体設定でlanguageCodeを指定します。

部分テンプレートしたい

すべてに共通するパーツは部分テンプレート機能を使うことで、テンプレート制作にかかる手間を削減できます。

ブロックテンプレートしたい

{{ block "main" . }}
<!-- デフォルトのテンプレートを書くことができます -->
<p>メインブロックが定義されていません。</p>
<p>以下のテンプレートを追加することを検討してください。</p>
<ul>
    <li>ページ用テンプレート: <code>/layouts/_default/single.html</code></li>
    <li>リスト用テンプレート: <code>/layouts/_default/list.html</code></li>
</ul>
{{ end }}

ベーステンプレート(baseof.html)の中でブロックテンプレート機能を利用できます。 テンプレートの種類によって変えたい部分だけをブロックテンプレートに置き換えることで、テンプレートのメンテナンスコストを減らします。

上記のサンプルでは、メインコンテンツに相当する部分を{{ define "main" }}と定義しておき、表示内容はページ用テンプレートリスト用テンプレートでそれぞれで上書きすることを想定しています。