2016-11-14 29 views
0

我想知道是否有人知道我是否可以访问液体中的JSON,如下面的示例。用Shopify液体模板访问JSON硬币在metafields

我已经创建了一个与命名空间suppliers_details供应商页面metafield,用钥匙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 %} 

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

干杯

回答

0

没有办法使用的液体来解析JSON或至少不是默认的方式。

你可以写一些代码,它分成几部分,但你将无法链的对象:

{% capture string %}{name:"Supplier Name One",address:"Supplier Address One"},{name:"Supplier Name Two",address:"Supplier Address Two"}{% endcapture %} 

{% assign jsplit = string | replace: '},{', '@@' %} 
{% assign jsplit = jsplit | replace: '{' %} 
{% assign jsplit = jsplit | replace: '}' %} 
{% assign jsplit = jsplit | split: '@@' %} 

{% for json in jsplit %} 
    {% assign splitByComma = json | split: ',' %} 
    {% for comma in splitByComma %} 
    {% assign splitByDots = comma | split: ':' %} 
    <p>{{ splitByDots[1] }}</p> 
    {% endfor %} 
{% endfor %} 

你会得到想要的结果,但不一样的方式,你想象中的那样。

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

+0

谢谢。 Shopify中没有包含YAML文件并解析它们的功能(如Jekyll允许的)? –

+0

当然没有。为什么Shopify会使用浏览器中没有模拟的格式? JSON是浏览器中客户端计算的标准数据结构,因此您可以获得JSON。由于JSON是一个字符串,我们很幸运,我们将它们存储在metafields中,然后用我们可信的JS呈现其中的数据。 –

+0

用JS构建它的一个问题是SEO。如果这是一个菜单或东西需要SEO友好建设与JS可以影响你的搜索引擎优化。 – darol100