使用 Shopify Liquid 模板访问元字段中的 JSON 块

Tom*_*ber 7 json template-engine liquid shopify

我想知道是否有人知道我是否可以在 Liquid 中访问 JSON,例如下面的示例。

我已经为带有名称空间的供应商页面创建了一个元字段suppliers_details,带有键suppliers和值:

{
  name: "Supplier Name One",
  address: "Supplier Address One"
},
{
  name: "Supplier Name Two",
  address: "Supplier Address Two"
}
Run Code Online (Sandbox Code Playgroud)

在模板中,我有:

{% assign suppliers = page.metafields.suppliers.suppliers %}
{% for supplier in suppliers %}
  <p>{{ supplier.name }}</p>
  <p>{{ supplier.address }}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为我无法将数据更改为模板可以用来迭代的格式,有没有办法做到这一点?

干杯

dav*_*4jr 13

这现在得到支持并且改变了游戏规则!Shopify 发布了一种名为“json_string”的新元字段格式类型,可让您通过普通液体点表示法直接访问每个节点的值。我知道这会让每个人的生活更轻松。取自文档(https://help.shopify.com/en/themes/liquid/objects/metafield):

https://help.shopify.com/en/themes/liquid/objects/metafield

这是 Shopify 开发人员在 Shopify 论坛上发布的可能有帮助的初始帖子之一:https ://ecommerce.shopify.com/c/api-announcements/t/new-json_string-value-type-for-metafield-object -540896


小智 10

此后,Shopify 已弃用“json_string”元字段并提供“json”元字段选项。

要使用点表示法访问数据,您需要在键后使用 .value。

例如,如果我有这个 JSON:

{
  name: "Supplier Name One",
  address: "Supplier Address One"
},
{
  name: "Supplier Name Two",
  address: "Supplier Address Two"
}
Run Code Online (Sandbox Code Playgroud)

我会这样访问它:

{% assign suppliers = page.metafields.suppliers.suppliers.value %}
{% for supplier in suppliers %}
  <p>{{ supplier.name }}</p>
  <p>{{ supplier.address }}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)