我可以将变量从 Jekyll 模板传递到包含然后使用该变量渲染数据吗?



在foo.html(一个帖子)中,我有以下内容:

{% assign table_name="application" %}
{% include table.html %}

此分配在表中似乎工作正常.html

{% assign tableName = table_name %}
<p>table name is: {{ tableName }}</p> # renders "table name is: application"

现在,我尝试通过执行以下操作对我在 config.yml 中定义的数据数组进行排序:

{%  for header in site.table.tableName.headers %}
<th>{{ header }}</th>
{% endfor %}

这给我没有任何输出。

如果我更改 for 语句以包含变量的内容,而不是变量,它可以正常工作。

{%  for header in site.table.application.headers %}

这让我相信这不是我的数组的问题,而是 Jekyll 的缺点,Jekyll 中的错误,或者我没有准确地构造我的语句。

知道我怎样才能做到这一点吗?

看起来可以做到这一点。我不得不更程序化地考虑它。似乎正在发生的事情是,杰基尔在期待一个物体,而我正在喂它一根绳子。

{% assign tableName = "aStringName" %}
{% include table.html %}

所以

# in _includes/table.html
{%  for header in site.table.tableName.headers %}

被解释为

{%  for header in site.table."aStringName".headers %}

当我切换到对象的括号表示法时,它是完美的。

最终结果:

{% for header in site.table[tableName].headers %}

或者,正如杰基尔所看到的,

{% for header in site.table['aStringName'].headers %}

最新更新