web-dev-qa-db-ja.com

jekyllはすべての変数をデバッグまたは印刷します

Jekyllの頭脳にピークを置き、何が起こっているのかを確認したいのですが、phpには get_defined_vars があるので、次のようにしてそれに似たことを実行しようとしました。

      {% for local_variable in local_variables %}
      <p> {{ local_variable }} </p><br>
      {% endfor %}

何も出力しません。頑張ってる? Rubyまたはこれのためのjekyllにいくつかのメソッドがありますか?私はあちこち調べて、すべてが正しく設定されていることを確認し、おそらく私が知らない変数について調べたいと思います。

29
thoth

Jekyll 2.xでは、 このプラグイン を使用できます。

{{ site | debug }}のようなことができます。

Jekyll 3以降、{{ variable | inspect }}を使用しています。

35
David Jacquel

他の回答では、質問の「すべての変数」の部分は扱いません。

ジキルはget_defined_vars同等、 ドキュメント は宣言 使用可能なすべてのグローバル変数 を宣言します(現時点では、sitepagelayoutcontent、およびpaginatorです)。

したがって、一連のjsonifyfilter 呼び出しを使用してall変数をデバッグ/印刷できます(一部の変数はescapeでフィルタリングされるため、 HTMLを含む):

<pre>
    site: {{ site | jsonify | escape }}
    page: {{ page | jsonify | escape }}
    layout: {{ layout | jsonify | escape }}
    content: {{ content | jsonify | escape }}
    paginator: {{ paginator | jsonify | escape }}
</pre>
2
Alex Peters

変数をきれいに表示するには、これを任意のテンプレートに挿入できます。

<pre id="jekyll-debug"></pre>
<script>
var obj = JSON.parse(decodeURIComponent("{{ site | jsonify | uri_escape }}"));
var pretty_json = JSON.stringify(obj, null, 4);  // Pretty-printed JSON (indented 4 spaces).
document.getElementById("jekyll-debug").textContent = pretty_json;
</script>

siteを変更します({{ site | jsonify | uri_escape }})を印刷する変数に変更します。

その後、生成されたページに変数がきちんと配置されているのを確認できます。このようなもの:

Pretty-printed Jekyll template variables

0
Flux