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

时间:2016-11-14 22:34:48

标签: json shopify template-engine liquid

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

我为包含名称空间suppliers_details的供应商页面创建了一个元字段,其中包含键suppliers和值:

{
  name: "Supplier Name One",
  address: "Supplier Address One"
},
{
  name: "Supplier Name Two",
  address: "Supplier Address Two"
}

在模板中我有:

{% assign suppliers = page.metafields.suppliers.suppliers %}
{% for supplier in suppliers %}
  <p>{{ supplier.name }}</p>
  <p>{{ supplier.address }}</p>
{% endfor %}

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

干杯

3 个答案:

答案 0 :(得分:3)

现在支持此功能,并且可以改变游戏规则! 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

答案 1 :(得分:1)

无法使用Liquid解析JSON,或者至少不是默认方式。

您可以编写一些代码将其拆分为多个部分,但您无法将对象链接起来:

    #container {
        width: 500px;
        margin: 0 auto;
        border: 1px solid #000;
    }

    #first {
        position:absolute;
        left:0;
        height:100%;
    }

    #second {
        position:absolute;
        right:0;
        height:100%;
    }

你会得到想要的结果,但不像你想象的那样。

最好的方法是将字符串传递给Javascript,在那里解析并通过JS填充DOM。

答案 2 :(得分:0)

我认为它现在正在工作,下面是我的json,它是产品metafield,而valueType是json字符串

[ 
   { 
      "question":"hello this is question",
      "answer":"Hello This is answer"
   },
   { 
      "question":"hello this is question2 ",
      "answer":"Hello This is answer 2"
   }
]

打击是液体代码

{% assign qas = product.metafields.manifester.product_qa %} // product.metafields.{namespace}.{key}

{% for qa in qas %}
  <div style="border-bottom: 1px solid #222222;">
    <p> {{ qa.question }} </p>
    <p style="font-weight:bold"> {{ qa.answer }} </p>
  </div>
{% endfor %}