2015-11-25 71 views
0

我在Jekyll中有下面的代碼,它不輸出我所期望的。Jekyll site.categories.keys什麼也沒有返回

{% 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,它似乎是一個Hashx2沒有價值...爲什麼?我期待它打印"abc", "def", ...

回答

0

這不是紅寶石,它是液體。變量評估的方式是不同的。

{{ site.categories }}{{ site['categories'] }}將返回值,如果他們的密鑰存在Liquid::Contextsee liquid 3.x code here)。

如果沒有匹配的關鍵是找到(像{{ site.categories.keys }}),液體試圖將對象(see)上發送一個命令,但命令列表被限於size, first and lastsee)。

對於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