2016-07-06 55 views
1

在最基本的级别上,我需要将部分对象路径附加到现有对象路径上。在这个特殊的例子中,我不能使用插件。如何在具有捷径和液体的路径中获取具有多个变量的数据

假设你有一个对象的路径:

{{ 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,但似乎无法找到一个可行的解决方案。

回答

0

这工作:

数据文件_data/grants.yml

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

获得深靶,利用 “点” 的字符串:

{% 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 %}