我在Jekyll中有以下代码,它没有输出我期望的内容。
{% assign x1= site.categories %}
<div id="x1">{{ x1 | inspect }}</div>
{% assign x2= site.categories.keys %}
<div id="x2">{{ x2 | inspect }}</div>
输出:
<div id="x1">{"abc"=>[<post: demo-post1="">, <post: demo-post2="">, <post: demo-post3="">, .... </div>
<div id="x2"></div>
或者更漂亮的“x1”版本
{abc"=>[, , , , , , ], "def"=>[, , , , , , , ], ....
所以,site.categories
中的数据似乎是Hash
,但x2
没有价值......为什么?我期待它打印"abc", "def", ...
答案 0 :(得分:0)
这不是红宝石,它是液体。评估变量的方式是不同的。
{{ site.categories }}
或{{ site['categories'] }}
如果Liquid::Context
(see liquid 3.x code here)中存在其密钥,则会返回值。
如果未找到匹配的键(例如{{ site.categories.keys }}
),则liquid会尝试在对象上发送命令(see),但命令列表仅限于size, first and last
({{ 3}})。
适用于Liquid 2.x和3.x。
如果您想要数组中的所有类别名称,您可以执行以下操作:
{% comment %}create an empty array{% endcomment %}
{% assign catNames = "" | split: "/" %}
{% for c in site.categories %}
{% assign catNames = catNames | push: c[0] %}
{% endfor %}
所有类别名称现在都在catNames
。