在最基本的层面上,我需要将一个部分对象路径附加到现有的对象路径上。在这个特定的例子中,我不能使用插件。
假设您有一个对象路径:
{{ 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 :(得分: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 %}