ページ変数
ページレベルの変数は、コンテンツファイルのフロントマターで定義されるか、コンテンツのファイルの場所から派生するか、コンテンツの本文自体から抽出されます。
以下は、ページレベル変数のリストです。 これらの多くは、フロントマターで定義されるか、ファイルの場所から派生するか、コンテンツ自体から抽出されます。
ページ変数
- .AlternativeOutputFormats
- 指定されたページのすべての代替フォーマットが含まれています。 この変数は、サイトの
<head>内のlink relリストで特に役立ちます。 (出力フォーマット を参照してください)。 - .Aliases
- このページのエイリアスです。
- .Ancestors
- 各ページの祖先を取得し、パンくずナビゲーション 実装の複雑さを簡素化します。
- .BundleType
- バンドル
タイプを指定します。ページがバンドルでない場合は、
leaf、branch、または空文字列を指定します。 - .Content
- コンテンツ自体で、フロントマターの下に定義されています。
- .Data
- このタイプのページに固有のデータです。
- .Date
- ページに関連付けられた日付です。
.Dateはコンテンツのフロントマターのdateフィールドから取得されます。また、.ExpiryDate、.PublishDate、.Lastmodも参照してください。 - .Description
- ページの説明文を指定します。
- .Draft
- ブール値で、フロントマターでコンテンツがドラフトとしてマークされている場合は
trueとなります。 - .ExpiryDate
- コンテンツの有効期限が切れる日付です。
.ExpiryDateはコンテンツのフロントマターにあるexpirydateフィールドから取得します。また、.PublishDate、.Date、.Lastmodも参照してください。 - .File
- このコンテンツファイルのファイルシステム関連データです。 ファイル変数 も参照してください。
- .Fragments
- Fragments は、このページのフラグメントを返す。 ページ フラグメント も参照してください。
- .FuzzyWordCount
- コンテンツのおおよその単語数です。
- .IsHome
- ホームページ
のコンテキストで
trueとなります。 - .IsNode
- 通常のコンテンツページでは常に
falseです。 - .IsPage
- 通常のコンテンツページでは常に
trueです。 - .IsSection
.Kindがsectionの場合は、trueとなります。- .IsTranslated
- 表示する翻訳がある場合は、
trueとなります。 - .Keywords
- コンテンツのメタキーワードを指定します。
- .Kind
- ページの 種類 を返します。 可能な戻り値は、
page、home、section、taxonomy、またはtermです。RSS、sitemap、robotsTXT、および404の種類もありますが、これらはそれぞれの種類のページのレンダリング中にのみ使用可能であり、したがって、どのPagesコレクションでも使用 できません。 - .Language
- サイト設定内の言語定義を指す言語オブジェクトです。
.Language.Langは、言語コードを提供します。 - .Lastmod
- コンテンツが最後に更新された日付です。
.Lastmodはコンテンツのフロントマターにあるlastmodフィールドから取得します。
lastmodが設定されておらず、.GitInfo機能が無効になっている場合は、フロントマターのdateフィールドが使用されます。lastmodが設定されておらず、.GitInfo機能が有効になっている場合は、代わりに.GitInfo.AuthorDateが使用されます。
.ExpiryDate、.Date、.PublishDate、および .GitInfo
も参照してください。
- .LinkTitle
- コンテンツへのリンクを作成するときにアクセスします。 設定されている場合、Hugo は
titleの前に、フロントマターのlinktitleを使用します。 - .Next
- 次の 通常ページ
を指します。(Hugo の デフォルトのソート
によってソートされます)。 たとえば、
{{ with .Next }}{{ .Permalink }}{{ end }}です。 最初のページから.Nextを呼び出すと、nilが返されます。 - .NextInSection
- 同じトップレベル セクション (たとえば、
/blog) の次の 通常ページ までを指します。ページは Hugo の デフォルトのソート によってソートされます。 たとえば、{{ with .NextInSection }}{{ .Permalink }}{{ end }}です。 最初のページから.NextInSectionを呼び出すと、nilが返されます。 - .OutputFormats
- 指定されたページの現在の形式を含む、すべての形式を含みます。 特定の形式を取得するには、
.Get関数 と組み合わせることができます。(「出力形式」 を参照してください)。 - .Pages
- 関連するページのコレクションです。この値は、通常のコンテンツページのコンテキスト内では
nilになります。.Pagesを参照してください。 - .Permalink
- このページへのパーマネント リンクです。 「パーマリンク」 を参照してください。
- .Plain
- ページのコンテンツから HTML タグを取り除き、文字列として表示したものです。
- .PlainWords
- Go の strings.Fields で定義されているように、.Plain を単語に分割した結果の文字列のスライスです。
- .Prev
- 前の 通常ページ
を指します。(Hugo の デフォルトのソート
によってソートされます)。 たとえば、
{{ if .Prev }}{{ .Prev.Permalink }}{{ end }}です。 最後のページから.Prevを呼び出すとnilが返されます。 - .PrevInSection
- 同じトップレベル セクション (たとえば、
/blog) の次の 通常ページ までを指します。ページは Hugo の デフォルトのソート によってソートされます。 たとえば、{{ if .PrevInSection }}{{ .PrevInSection.Permalink }}{{ end }}です。 最後のページから.Prevを呼び出すとnilが返されます。 - .PublishDate
- コンテンツが公開された、または公開される予定の日付です。
.Publishdateはコンテンツのフロントマターのpublishdateフィールドから取得されます。また、.ExpiryDate、.Date、.Lastmodも参照してください。 - .RawContent
- フロントマターのない生の Markdown コンテンツです。 remarkjs.com と一緒に使うと便利です。
- .ReadingTime
- コンテンツを読むのに必要な推定時間 (分) です。
- .Resources
- このページに関連する画像や CSS などのリソースです。
- .Ref
- 指定された参照のパーマリンクを返します (たとえば、
.Ref "sample.md")。.Refは、ページ内フラグメントを正しく処理 しません。 詳細は、「クロスリファレンス」 を参照してください。 - .RelPermalink
- このページの相対的なパーマネント リンクです。
- .RelRef
- 指定された参照の相対パーマリンクを返します (たとえば、
RelRef "sample.md")。.RelRefは、ページ内フラグメントを正しく処理 しません。 詳細は、「クロスリファレンス」 を参照してください。 - .Site
- 「サイト変数」 を参照してください。
- .Sites
- すべてのサイト (言語) を返します。 典型的な使用例は、
<a href="{{ .Sites.First.Home.RelPermalink }}">...</a>のように、メイン言語にリンクを戻すことです。 - .Sites.First
- 最初の言語のサイトを返します。 これが多言語設定でない場合は、それ自体が返されます。
- .Summary
- サマリービューでスニペットを簡単に表示するために、コンテンツの要約を生成したものです。 ブレークポイントは、コンテンツページの適切な場所に <!--more-> を挿入して手動で設定するか、ページテキストから独立して要約を記述することができます。 詳細については、「コンテンツサマリー」 を参照してください。
- .TableOfContents
- ページのレンダリングされた 目次 です。
- .Title
- このページのタイトルです。
- .Translations
- 現在のページの翻訳版のリストです。 詳しくは、「多言語対応モード」 を参照してください。
- .TranslationKey
- 現在のページの言語翻訳をマップするために使用されるキーです。 詳しくは、「多言語対応モード」 を参照してください。
- .Truncated
- ブール値で、
.Summaryが切り詰められた場合はtrueとなります。 必要なときだけ、 “Read more…” リンクを表示させるのに便利です。 詳しくは、 「コンテンツサマリー」 を参照してください。 - .Type
- コンテンツの コンテンツタイプ
(たとえば、
posts) を指定します。 - .Weight
- このコンテンツに (フロントマターで) 重みを割り当て、ソート (並べ替え) に使用します。
- .WordCount
- コンテンツに含まれる単語数です。
書き込み可能なページスコープ変数
- .Scratch
- データを保存および操作するためのスクラッチを返します。
.Storeメソッドとは対照的に、このスクラッチはサーバーの再構築時にリセットされます。 - .Store
- データを保存および操作するためのスクラッチを返します。
.Scratchメソッドとは対照的に、このスクラッチはサーバーの再構築時にリセットされません。
セクション変数とセクション メソッド
「コンテンツセクション」 も参照してください。
- .CurrentSection
- ページの現在のセクションです。 セクションまたはホームページの場合、この値はページそのものになります。
- .FirstSection
- ルート以下のページの最初のセクションで、たとえば
/docs、/blogなどです。 - .InSection $anotherPage
- 指定されたページが現在のセクションにあるかどうか。
- .IsAncestor $anotherPage
- 現在のページが指定されたページの祖先であるかどうか。
- .IsDescendant $anotherPage
- 現在のページが指定されたページの子孫であるかどうか。
- .Parent
- セクションの親セクション、またはページのセクションです。
- .Section
- このコンテンツが属する セクション
です。注意: ネストされたセクションの場合、これはディレクトリ内の最初のパス要素、たとえば、
/blog/funny/mypost/ => blogのようになります。 - .Sections
- このコンテンツの下にある セクション です。
.Pages 変数
.Pages は .Data.Pages のエイリアスです。 .Pages というエイリアス形式を使用するのが一般的です。
.Pages と .Site.Pages の比較
- 通常 ページは、「投稿」ページまたは「コンテンツ」ページです。
- リーフバンドル は、通常ページです。
- リスト ページは、通常 ページとその他の リスト ページをリストできます。 例としては、ホームページ、セクションページ、タクソノミー (
/tags/) および 用語 (/tags/foo/) ページがあります。- ブランチバンドル は、リスト ページです。
.Site.Pages- サイトの すべて のページ、 通常 ページ、セクション、分類など、のコレクションで、すべてのスーパーセットです。
.Site.RegularPages- 通常 ページのみのコレクションです。
上記の .Site. .. ページのコレクションには、テンプレート内の任意のスコープからアクセスできます。
以下の変数は、現在の リスト ページのスコープからのみ、ページのコレクションを返します。
.Pages- 現在の リスト ページの下にある、 通常 ページと 第 1 レベルのみ のセクションページのコレクションです。
.RegularPages- 現在の リスト ページの下にある 通常 ページのみのコレクションです。 これは、ネストされた セクション/リスト ページ内の通常ページを 除外します (これらは、
_index.mdファイルを含むサブディレクトリです)。 .RegularPagesRecursive- リストページの下にある すべての 通常 ページのコレクションです。これは、ネストされた セクション/リスト ページ内の通常ページを 含みます。
- 注意
- 通常 ページのスコープから、
.Pagesと.RegularPagesは空のスライスを返します。
Page fragments
.Fragments メソッドは、現在のページのフラグメントのリストを返します。
- .Headings
- 現在のページの見出しの再帰的なリスト。 目次を生成するために使用できます。
- .Identifiers
- 現在のページの識別子のソートされたリスト。 ページに特定の識別子が含まれているかどうか、またはページに重複した識別子が含まれているかどうかを確認するために使用できます。
{{ if .Fragments.Identifiers.Contains "my-identifier" }}
<p>Page contains identifier "my-identifier"</p>
{{ end }}
{{ if gt (.Fragments.Identifiers.Count "my-identifier") 1 }}
<p>Page contains duplicate "my-identifier" fragments</p>
{{ end }}
- .HeadingsMap
- 現在のページの見出しのマップを保持します。 特定の見出しから目次を開始するために使用できます。
戻り値の型については、Go Doc も参照してください。
フックとショートコードのフラグメント
.Fragments は、現在のページ (.Page.Fragments) 上であっても、レンダリング フックから安全に呼び出すことができます。 ショートコードの場合、すべての .Fragments の使用を {{< >}} ショートコード区切り文字の内側にネストすることをお勧めします ({{% %}} は目次の作成に参加するため、尻尾を噛む状況に陥りやすくなります)。
グローバルページ関数
Hugo はほとんどの場合、データ コンテキストとして Page をトップレベルのテンプレート (たとえば、single.html) に渡します (唯一の例外はマルチホスト サイトマップ テンプレートです)。 これは、テンプレート内の . 変数を使用して、現在のページにアクセスできることを意味します。
しかし、.Render やパーシャルなどの内部に深くネストしている場合、Page オブジェクトにアクセスすることは必ずしも現実的でないし、可能でもありません。
このため、Hugo では、テンプレート内のどこからでも現在のページにアクセスできるグローバル page 関数を提供しています。
{{ page.Title }}
これには1つ注意点があり、これは新しいことではありませんが、ここで言及する価値があります。
それは、Hugo では、partialCached を使用したときやショートコードの中など、キャッシュされた値が表示される場合があることです。
ページレベルのパラメータ
タクソノミーを含む、コンテンツファイルのフロントマターで定義されたその他の値は、.Params 変数の一部として使用可能になります。
上記のフロントマターで、tags と categories タクソノミーにアクセスするには、以下のようにします。
.Params.tags.Params.categories
.Params`変数は、特にコンテンツファイルにユーザー定義のフロントマターフィールドを導入するのに便利です。たとえば、書評に関する Hugo の Web サイトでは、以下のようなフロントマターを持つことができます。
これらのフィールドは、.Params.affiliatelink および .Params.recommendedby 経由でアクセスできるようになります。
<h3><a href="{{ .Params.affiliatelink }}">Buy this book</a></h3>
<p>It was recommended by {{ .Params.recommendedby }}.</p>
このテンプレートは、以下のようにレンダリングされます。
<h3><a href="http://www.my-book-link.here">Buy this book</a></h3>
<p>It was recommended by my Mother.</p>
.Param メソッド
Hugo では、個々のページでパラメータを宣言したり、Web サイト全体でグローバルに宣言したりできます。よくある使用例としては、サイトのパラメータには一般的な値を、一部のページ (たとえば、ヘッダ画像など) にはより具体的な値を指定するというものがあります 。
{{ $.Param "header_image" }}
.Param メソッドは、ページパラメータ (つまり、コンテンツのフロントマター) またはサイトパラメータ (つまり、サイト設定内) での定義に従って、単一の値を解決する方法を提供します。
フロントマターでネストしたフィールドにアクセスする
フロントマターが以下のようなネストしたフィールドを含む場合。
.Param は、以下のようにフィールド名をドットで連結することにより、これらのフィールドにアクセスできます。
{{ $.Param "author.display_name" }}