将数组文字分配给 Liquid 模板中的变量
Posted
技术标签:
【中文标题】将数组文字分配给 Liquid 模板中的变量【英文标题】:Assign an array literal to a variable in Liquid Template 【发布时间】:2014-05-10 21:17:06 【问题描述】:我知道从我的液体模板创建数组的唯一方法是:
% assign my_array = "one|two|three" | split: "|" %
还有其他方法吗?
【问题讨论】:
【参考方案1】:还有其他方法吗?
不,您的split
过滤器就是这样做的方法。
【讨论】:
正确。您必须使用split
。液体阵列上的 Shopify 文档:docs.shopify.com/themes/liquid-documentation/basics/…【参考方案2】:
头条
这是一个很好的解决方法,添加到文件顶部:
---
my_array:
- one
- two
- three
---
然后将其用作:
page.my_array
类似于_config
或_data/some_file.yml
下的站点范围site.data.my_array
。
Jekyll 3 布局更新
如果frontmatter是一个布局,你需要使用:
layout.style
相反。见:https://***.com/a/37418818/895245
【讨论】:
另一种选择是创建一个名为“_data/my_array.yml”的文件并放入内容:“-一-二-三”。然后,如您所说,可以通过 site.data.my_array 访问它。 为什么禁止直接在模板中创建? @Adi 不太清楚。一般来说,Liquid 被设计为允许运行不受信任的模板。【参考方案3】:这是另一种方法,首先使用 capture
作为一种友好的方式将换行符分隔的值分配给变量,然后使用 assign
和一些过滤器将该变量转换为数组:
% capture my_array %
one
two
three
% endcapture %
% assign my_array = my_array | strip | newline_to_br | strip_newlines | split: "<br />" %
过滤器执行以下操作:
strip
删除one
之前的前导空格和three
之后的尾随空格。
newline_to_br
用 <br />
标记替换换行符。
strip_newlines
删除可能无关的换行符。
split
将字符串转换为数组,使用<br />
作为分隔符。
【讨论】:
【参考方案4】:如果将数组放在页面frontmatter中,例如:
---
my_array:
- one
- two
- three
---
我测试过你可以这样写:
---
my_array: [one,two,three]
my_prime: [5,7,11,13,17,19]
---
page.my_array
和 page.my_prime
都将正确输出。
【讨论】:
以上是关于将数组文字分配给 Liquid 模板中的变量的主要内容,如果未能解决你的问题,请参考以下文章