Jekyll site.categories.keys什么都不返回

时间:2015-11-25 19:58:20

标签: ruby jekyll liquid

我在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"=&gt;[<post: demo-post1="">, <post: demo-post2="">, <post: demo-post3="">,  .... </div>

<div id="x2"></div>

或者更漂亮的“x1”版本

{abc"=>[, , , , , , ], "def"=>[, , , , , , , ], ....

所以,site.categories中的数据似乎是Hash,但x2没有价值......为什么?我期待它打印"abc", "def", ...

1 个答案:

答案 0 :(得分:0)

这不是红宝石,它是液体。评估变量的方式是不同的。

{{ site.categories }}{{ site['categories'] }}如果Liquid::Contextsee 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