【问题标题】:Jekyll site.categories.keys returns nothingJekyll site.categories.keys 什么也不返回
【发布时间】:2015-11-25 19:58:19
【问题描述】:

我在 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", ...

【问题讨论】:

    标签: ruby jekyll liquid


    【解决方案1】:

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

    如果Liquid::Context (see liquid 3.x code here) 中存在它们的键,则{{ site.categories }}{{ site['categories'] }} 将返回值。

    如果没有找到匹配的键(例如{{ site.categories.keys }}),liquid 会尝试在对象上发送命令(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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多