将数组文字分配给 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&lt;br /&gt; 标记替换换行符。 strip_newlines 删除可能无关的换行符。 split 将字符串转换为数组,使用&lt;br /&gt; 作为分隔符。

【讨论】:

【参考方案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 模板中的变量的主要内容,如果未能解决你的问题,请参考以下文章

在 Liquid 模板中输出文字花括号

Smarty模本引擎

将变量值分配给模板中的表单域

传递参数以包含在 Liquid 模板中

尝试将多个变量分配给刀片模板

在 VBA 中将 Word 对象分配给 Variant 变量