将数组文字分配给Liquid Template中的变量

时间:2014-03-31 13:43:37

标签: jekyll liquid

我知道从液体模板创建数组的唯一方法是:

{% assign my_array = "one|two|three" | split: "|" %}

还有其他办法吗?

4 个答案:

答案 0 :(得分:21)

<强> Frontmatter

这是一个很好的解决方法,添加到文件的顶部:

---
my_array:
  - one
  - two
  - three
---

然后将其用作:

{{ page.my_array }}

类似于site.data.my_array_config下的网站范围_data/some_file.yml

更新Jekyll 3的布局

如果frontmatter是布局的,则需要使用:

{{ layout.style }}

代替。请参阅:https://stackoverflow.com/a/37418818/895245

答案 1 :(得分:8)

  

还有其他办法吗?

不,您的split过滤器就是这样做的。

答案 2 :(得分:1)

如果你把数组放在页面的前端,比如:

---
my_array:
  - one
  - two
  - three
---

我已经测试过你可以像这样简单地编写它:

---
my_array: [one,two,three]
my_prime: [5,7,11,13,17,19]
---

{{ page.my_array }}{{ page.my_prime }} 都会正确输出。

答案 3 :(得分:0)

这是另一种方法,首先使用capture作为将变量之间用换行符分隔的值分配给变量,然后使用assign和一些过滤器将该变量转换为数组的友好方法:< / p>

{% capture my_array %}
one
two
three
{% endcapture %}

{% assign my_array = my_array | strip | newline_to_br | strip_newlines | split: "<br />" %}

过滤器执行以下操作:

  1. strip删除one之前的前导空格和three之后的尾随空格。
  2. newline_to_br<br />标签替换换行符。
  3. strip_newlines删除了可能多余的换行符。
  4. split使用<br />作为分隔符将字符串转换为数组。