Skip to main content

テンプレートのデバッグ

Go テンプレートの printf 関数を使用すると、Hugo テンプレートをデバッグできます。 これらのスニペットは、さまざまなコンテキストで利用可能な変数をすばやく簡単に視覚化できます。

ここでは、よくある質問に答えるために、テンプレートに追加できるスニペットをいくつか紹介します。

これらのスニペットは、すべての Go テンプレートで利用可能な printf 関数を使用します。 この関数は Go 関数 fmt.Printf  のエイリアスです。

このコンテキストで使用できる変数は?

テンプレート構文 $. を使用すると、テンプレート内の任意の場所からトップレベルのテンプレート コンテキストを取得できます。これは、.Site の下にあるすべての値を出力します。

{{ printf "%#v" $.Site }}

以下のコードにより、.Permalink の値が出力されます。

{{ printf "%#v" .Permalink }}

以下のコードは、現在のコンテキスト (.、別名 「ドット」 ) にスコープされたすべての変数のリストを出力します。

{{ printf "%#v" . }}

ホームページ を開発する際、ループしているページの 1 つはどのようなものでしょうか。

{{ range .Pages }}
    {{/* The context, ".", is now each one of the pages as it goes through the loop */}}
    {{ printf "%#v" . }}
{{ end }}

場合によっては、現在のコンテキストで以下のスニペットを使用して、操作できる内容をわかりやすく表示する方が便利な場合があります。

<pre>{{ . | jsonify (dict "indent" " ") }}</pre>

ページ コレクション (ホーム、セクション、分類、用語テンプレートに渡されるコンテキストなど) を含むコンテキストを表示するためにこの構造を使用しようとすると、Hugo はエラーをスローすることに注意してください。

定義済みの変数が表示されないのはなぜですか?

以下のコードにより、partial 関数で変数を渡していることを確認します。

{{ partial "header.html" }}

この例ではヘッダー パーシャルをレンダリングしますが、ヘッダー パーシャルはコンテキスト変数にアクセスできません。 変数を明示的に渡す必要があります。 たとえば、「ドット」 が追加されていることに注意してください。

{{ partial "header.html" . }}

ドット (.) は、Hugo テンプレートを理解するための基本とみなされています。 詳細については、Hugo テンプレート入門 を参照してください。