代码之家  ›  专栏  ›  技术社区  ›  kikito

液体模板-按名称访问成员

  •  2
  • kikito  · 技术社区  · 15 年前

    我在用 Jekyll 创建新博客。它使用 Liquid 在下面。

    Jekyll定义了某些“变量”: site , content , page , post paginator . 这些“变量”有几个“成员”。例如, post.date 将返回邮件的日期,而 post.url 将返回其URL。

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

    请参见以下示例:

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

    我有一个变量叫做 name 要么是 'date' 'url' .

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

    我找到的唯一方法是使用 for 循环以循环遍历的所有对(键值) 邮递 . 当心!这很可怕:

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

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

    谢谢。

    2 回复  |  直到 9 年前
        1
  •  2
  •   kikito    15 年前

    我不知道我在想什么。

    post[name] 是完全有效的液体结构。因此,上述for if代码可以替换为:

    {{ post[name] }}
    

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

    Liquid允许更高级的构造;下面的构造在语法上是正确的,如果 post , element , categories 等的定义正确:

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

    我对液体感到非常惊讶。将最终继续调查。

        2
  •  0
  •   ergophobe    9 年前

    事实上,这对我不起作用。我尝试了一系列不同的组合,最终成功的是

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

    输出: 这是一个测试