如何使用jekyll和liquid获取带有多个变量的数据

时间:2016-07-06 22:12:25

标签: jekyll liquid

在最基本的层面上,我需要将一个部分对象路径附加到现有的对象路径上。在这个特定的例子中,我不能使用插件。

假设您有一个对象路径:

{{ site.data.grants.2015.Return.ReturnHeader.ReturnTypeCd }}

当然,也可以参考如下:

{% assign var = "ReturnTypeCd" %}
{{ site.data.grants.2015.Return.ReturnHeader[var] }}

我如何在变量中添加额外的嵌套级别?

{% assign xTest = "Return.ReturnHeader.ReturnTypeCd" %}
{{ site.data.grants.2015[xTest] }} 

//does not work

我使用点括号和括号表示并使用append以及capture,但似乎无法找到有效的解决方案。

1 个答案:

答案 0 :(得分:0)

这有效:

数据文件为_data/grants.yml

"2015":
  Return:
    ReturnHeader:
      ReturnTypeCd: "Et hop !"

使用"点缀"深入了解目标string:

{% assign dataPath = site.data.grants.2015 %}
{% assign target = "Return.ReturnHeader.ReturnTypeCd" %}

{% comment %} ++++ Transform target string to an array  {% endcomment %}
{% assign labels = target | split:"." %}

{% comment %} ++++
Looping in labels array and reassigning dataPath on each loop.
This goes deeper and deeper in the data tree
++++ {% endcomment %}

{% for label in labels %}
  <h2>Label : {{ label }}</h2>
  {% assign dataPath = dataPath[label] %}
  <p>dataPath : {{ dataPath }}</p>
{% endfor %}