在Liquid模板中,将一个数组声明赋值给一个变量

40

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

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

还有其他的方法吗?

4个回答

31

前置内容

这是一个不错的解决方法,将以下内容添加到您的文件顶部:

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

然后将其用作:

{{ page.my_array }}

对于整个站点的类似情况,_config_data/some_file.yml 下的 site.data.my_array 也是如此。

Jekyll 3关于布局的更新

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

{{ layout.style }}

请参考此链接:https://dev59.com/Hmox5IYBdhLWcg3wznk0#37418818


2
另一个选项是创建一个名为"_data/my_array.yml"的文件,并将内容放在其中:" - one
  • two
  • three"。然后,它可以通过site.data.my_array访问,就像你说的那样。
- Erel Segal-Halevi
为什么直接在模板中创建它是被禁止的? - Adi Prasetyo
@Adi 不太确定。一般来说,Liquid 的设计存在缺陷,允许运行不受信任的模板。 - Ciro Santilli OurBigBook.com

8

还有其他方法吗?

没有了,您的split过滤器是实现它的方法。


请使用 split。Shopify关于Liquid数组的文档:https://docs.shopify.com/themes/liquid-documentation/basics/types#arrays - Danny

2

这里有另一种方法,首先使用capture,以友好的方式将换行分隔的值分配给变量,然后使用assign和几个过滤器将该变量转换为数组:

{% 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 /> 作为分隔符。

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 }}都将正确输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接