我想瞥一眼Jekyll的内部运作,看看发生了什么。在php中,你可以使用get_defined_vars,所以我尝试使用类似的方式:
{% for local_variable in local_variables %}
<p> {{ local_variable }} </p><br>
{% endfor %}
输出什么都没有。我是不是在尝试过多?Ruby或Jekyll中有没有这样的方法?我只想四处探索,确保一切设置正确,并可能了解我不知道的变量。
我想瞥一眼Jekyll的内部运作,看看发生了什么。在php中,你可以使用get_defined_vars,所以我尝试使用类似的方式:
{% for local_variable in local_variables %}
<p> {{ local_variable }} </p><br>
{% endfor %}
输出什么都没有。我是不是在尝试过多?Ruby或Jekyll中有没有这样的方法?我只想四处探索,确保一切设置正确,并可能了解我不知道的变量。
inspect
无法查看变量内容,而 jsonify
可以做到。
{{ variable | jsonify }}
不需要任何插件。
请注意,jsonify
将使用尽可能多的内存来完成其工作,而没有任何特定的限制。比如,如果你有数百篇帖子或页面,并且你想一次性地对它们进行json序列化,这可能不会按照你的预期工作。最坏的情况是系统可能会耗尽内存并变得无响应。请谨慎行事。
site
、page
、layout
、content
和paginator
)。jsonify
过滤器的调用(还要使用escape
进行过滤,因为其中一些变量将包含HTML),来调试/打印所有变量。<pre>
site: {{ site | jsonify | escape }}
page: {{ page | jsonify | escape }}
layout: {{ layout | jsonify | escape }}
content: {{ content | jsonify | escape }}
paginator: {{ paginator | jsonify | escape }}
</pre>
为了对变量进行美观打印,您可以将以下内容插入到任何模板中:
<pre id="jekyll-debug"></pre>
<script>
var obj = JSON.parse(decodeURIComponent("{{ site | jsonify | uri_escape }}"));
var prettyJson = JSON.stringify(obj, null, 4); // Pretty-printed JSON (indented 4 spaces).
document.getElementById("jekyll-debug").textContent = prettyJson;
</script>
将 {{ site | jsonify | uri_escape }}
中的 site
改为您要打印的任何变量。
然后,您就可以在生成的页面中看到整齐排列的变量。就像这样:
给未来看到这个页面的人。
我已经编写了一个包来完成这种工作。在你的命令行中,安装它,
gem install 'jekyll-liquid-debug'
然后,您可以在终端中调试Liquid
文件,而无需一遍又一遍地构建整个站点。
通过使用,
jekyll-liquid-debug -f YOUR_LIQUID_FILE.liquid
它还有其他用途,请多加了解~