3

我正在使用Jekyll创建一个新博客。它在下面使用液体

Jekyll 定义了某些“变量”:sitecontentpage和。这些“变量”有几个“成员”。例如,将返回帖子的日期,而将返回其 url。postpaginatorpost.datepost.url

我的问题是:我可以使用另一个变量作为成员名来访问变量的成员吗?

请参见以下示例:

{% if my_condition %}
  {% assign name = 'date' %}
{% else %}
  {% assign name = 'url' %}
{% endif %}

我有一个名为的变量name,它是'date'or 'url'

我怎样才能使液体相当于post[name]红宝石?

我发现的唯一方法是使用for循环遍历post. 谨防!这是相当可怕的:

{% for property in post %}
  {% if property[0] == name %}
    {{ property[1] }}
  {% endif %}
{% endfor %}

啊!我希望有更好的方法。

谢谢。

4

2 回答 2

4

我不知道我在想什么。

post[name]是一种完全有效的液体结构。所以上面的 for-if 代码可以这样替换:

{{ post[name] }}

我以为我试过这个,但显然我没有。哦!

Liquid 允许更高级的构造。以下一个在语法上是正确的,如果post, element,categories等被正确定义,将返回预期值:

{{ post[element.id].categories[1].name }}

我对 Liquid 感到非常惊讶。肯定会继续调查。

于 2010-06-09T15:25:34.717 回答
1

实际上,这对我不起作用。我尝试了一堆不同的组合,最终奏效的是

<!-- object myObj.test has the string value "this is a test" -->
{% assign x = 'test' %}
{{ myObj.[x] }}

输出:这是一个测试

于 2015-12-06T02:20:19.990 回答