2016-11-14 30 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