2016-07-06 56 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 %}