我正在使用Jekyll来创建新博客。它使用下面的Liquid。
Jekyll定义了某些“变量”:site
,content
,page
,post
和paginator
。这些“变量”有几个“成员”。例如,post.date
将返回帖子的日期,而post.url
将返回其网址。
我的问题是:我可以使用其他变量作为成员名称来访问变量的成员吗?
请参阅以下示例:
{% if my_condition %}
{% assign name = 'date' %}
{% else %}
{% assign name = 'url' %}
{% endif %}
我有一个名为name
的变量'date'
或'url'
。
如何在红宝石中制作相当于post[name]
的液体?
我发现的唯一方法是使用for
循环迭代post
的所有对(键值)。谨防!这太可怕了:
{% for property in post %}
{% if property[0] == name %}
{{ property[1] }}
{% endif %}
{% endfor %}
哎呀!我希望有更好的方法。
感谢。
答案 0 :(得分:2)
我不知道我在想什么。
post[name]
是一种完全有效的液体结构。因此上面的for-if代码可以替换为:
{{ post[name] }}
我以为我试过这个,但显然我没有。 D'哦!
Liquid甚至承认更高级的构造;以下一个在语法上是正确的,如果正确定义了post
,element
,categories
等,它将返回预期值:
{{ post[element.id].categories[1].name }}
我对Liquid非常惊讶。肯定会继续调查。
答案 1 :(得分:1)
实际上,这对我不起作用。我尝试了一堆不同的组合,最终起作用的是
<!-- object myObj.test has the string value "this is a test" -->
{% assign x = 'test' %}
{{ myObj.[x] }}
输出: 这是一个测试