我想进入Jekyll的大脑,看看你发生了什么,在php中你有get_defined_vars,所以我尝试做类似的事情:
{% for local_variable in local_variables %}
<p> {{ local_variable }} </p><br>
{% endfor %}
哪个输出什么都没有。我努力了吗?在ruby或jekyll中有一些方法吗?我只是想四处寻找并确保一切设置正确,并可能找出我不知道的变量。
答案 0 :(得分:34)
答案 1 :(得分:21)
inspect
并不允许您查看变量,而jsonify
就是这样。
{{ variable | jsonify }}
无需插件。
请注意,jsonify
将使用尽可能多的内存来执行其中没有任何特定限制的内存。比方说,如果您有数百个帖子或页面,并且您希望一次性将它们全部解开,这可能无法按预期工作。最坏的情况是系统可能会从RAM中消失并变得无法响应。谨慎行事。
答案 2 :(得分:2)
其他答案未解决问题的“所有变量”部分。
尽管Jekyll不提供等效的get_defined_vars
,但the documentation确实声明了all available global variables(目前为site
,page
,{{1 }},layout
和content
)。
因此,您可以通过一系列paginator
filter调用来调试/打印所有变量(也可以使用jsonify
进行过滤,因为其中一些将包含HTML) :
escape
答案 3 :(得分:1)
要漂亮地打印变量,可以将其插入任何模板中
<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 }}
中)更改为要打印的变量。
然后您将可以看到您的变量在生成的页面中排列整齐。像这样:
答案 4 :(得分:0)
为了将来,谁会看到此页面。
我已经编写了一个Package来进行此类工作。在您的命令行中安装它,
gem install 'jekyll-liquid-debug'
然后,您可以在终端中调试您的liquid
文件,而无需一次又一次地构建整个站点。
通过使用
jekyll-liquid-debug -f YOUR_LIQUID_FILE.liquid
它还有其他用途,请检查更多〜