Skip to main content

メニュー

Hugo は、シンプルでありながら強力なメニューシステムを備えています。

概要

サイトのメニューを作成するには、以下のようにします。

  1. メニューエントリを定義する
  2. 各エントリを ローカライズ します
  3. テンプレート を使用してメニューをレンダリングします

フラットまたはネストされた複数のメニューを作成します。 たとえば、ヘッダーにはメイン メニューを作成し、フッターには別のメニューを作成します。

メニュー エントリを定義するには、以下の 3 つの方法があります。

  1. 自動的に
  2. フロントマターで
  3. サイト設定で

自動的に定義する

サイトの最上位セクションごとにメニューエントリを自動的に定義するには、サイト設定でセクション ページ メニューを有効にします。

これにより、テンプレートの site.Menus.main でアクセスできるメニュー構造が作成されます。 詳細は、メニューテンプレート を参照してください。

フロントマターで定義する

「メイン」メニューにページを追加するには、以下のようにします。

テンプレート内の site.Menus.main のエントリーにアクセスしてください。 詳細は、メニューテンプレート を参照してください。

「メイン」メニューと「フッター」メニューにページを追加するには、以下のようにします。

テンプレート内の site.Menus.main および site.Menus.footer を使用してエントリにアクセスします。 詳細は、メニューテンプレート を参照してください。

プロパティ

これらのプロパティは、フロントマターでメニュー項目を定義するときに以下のように使用します。

identifier
(string) 2 つ以上のメニュー項目が同じ name を持つとき、または翻訳テーブルを使って name をローカライズするときに必要です。文字で始まり、その後にアルファベット、数字、アンダースコアが続く必要があります。
name
(string) メニューエントリをレンダリングするときに表示するテキストです。
params
(map) メニューエントリのユーザー定義プロパティです。
parent
(string) 親メニューエントリの identifier を指定します。 identifier が定義されていない場合は name を使用します。ネストされたメニューの子エントリに必要です。
post
(string) メニューエントリをレンダリングするときに後ろに追加する HTML。
pre
(string) メニューエントリをレンダリングするときに先頭に追加する HTML。
title
(string) レンダリングされたメニューエントリの HTML title 属性。
weight
(int) 0 ではない整数値で、メニューのルートからの相対的な位置、 または子エントリの場合は親からの相対的な位置を表します。軽いエントリは上に浮き、重いエントリは下に沈みます。

このフロントマターのメニュー エントリは、以下のような使用可能なプロパティの一部を示しています。

テンプレート内の site.Menus.main のエントリーにアクセスしてください。 詳細は、メニューテンプレート を参照してください。

サイト構成で定義する

「メイン」メニューのエントリを定義するには、以下のようにします。

これにより、テンプレートの site.Menus.main でアクセスできるメニュー構造が作成されます。 詳細は、メニューテンプレート を参照してください。

「フッター」メニューのエントリを定義するには、以下のようにします。

これにより、テンプレートの site.Menus.footer でアクセスできるメニュー構造が作成されます。 詳細は、メニューテンプレート を参照してください。

プロパティ

サイト構成で定義された各メニュー エントリには、2 つ以上のプロパティが必要です。

  • 内部リンクには namepageRef を指定します
  • 外部リンクには nameurl を指定します
pageRef
(string) content ディレクトリを基準とした、ターゲット ページのファイル パスです。 言語コードとファイル拡張子を省略します。 内部 リンクには必須です。
Kind pageRef
home /
page /books/book-1
section /books
taxonomy /tags
term /tags/foo
url
(string) 外部 リンクには必須です。

このネストされたメニューは、以下のような、利用可能なプロパティのいくつかを示しています。

これにより、テンプレートの site.Menus.main でアクセスできるメニュー構造が作成されます。 詳細は、メニューテンプレート を参照してください。

ローカライズする

Hugo は、メニュー エントリをローカライズする 2 つの方法を提供します。 多言語対応 を参照してください。

レンダリングする

メニューテンプレート を参照してください。