jekyll:是否可以使用page.variable作为条件if语句中的运算符?

时间:2018-02-23 00:49:24

标签: json jekyll liquid

路径中的JSON文件:_data/integers.json,如下所示:

{
    "100": [
        {
            "value": "true"
        }
    ]
}

在Jekyll页面中:

---

integers:
- 100
- 200

---

我想做的事情:

{% assign json = site.data.integers %}
{% for integer in page.integers %} // loop
 {% if json.{{ integer }}[0].value == "true" %} ... {% endif %}
{% endfor %}

e.g。在条件语句中使用{{ integer }}(aka page.integer[0])作为运算符。

有方法吗? ......要朋友。

1 个答案:

答案 0 :(得分:0)

如果我们按原样保留你的json和page.integers:

{% assign json = site.data.integers %}
{{ json | inspect }}
{% for integer in page.integers %}
  {% comment %} Here we cast our integer to a string, 
                as json keys are strings
                (100 | append:"" => "100")
  {% endcomment %}
  {% assign intAsStr = integer | append:"" %}

  {% comment %} as a possible json[intAsStr] returns an array,
                we retrieve the first and only element in it 
  {% endcomment %}
  {% assign data = json[intAsStr].first %}

  {% if data["value"] == "true" %}
    <h1>We have a match on {{ intAsStr }}</h1>
  {% endif %}
{% endfor %}

我们可以通过一些重构来简化

数据/ integers.json

{
    "100": { "value": true }
}

jekyll page

---
integers:
  - "100"
  - "200"
---

{% assign json = site.data.integers %}
{{ json | inspect }}
{% for integer in page.integers %}
  {% assign data = json[integer] %}
  {% if data["value"] == true %}
     <h1>We have a match on {{ integer }}</h1>
  {% endif %}
{% endfor %}