2016-11-14 15 views
0

以下の例のようにLiquidのJSONにアクセスできるかどうか知っている人はいませんか?Shopify Liquidテンプレートを使用したメタフィールドのJSON塊へのアクセス

は、私は、キーsuppliersと値で、名前空間suppliers_detailsとサプライヤーページ用metafieldを作成しました:テンプレートで

{ 
    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は文字列なので、メタファイルに格納して信頼できるJSでデータをレンダリングすることは幸運です。 –

+0

JSで構築する際の1つの問題はSEOです。これがメニューやSEOに親しみやすいものでなければならないものは、JSでそれを構築することはあなたのSEOに影響を与える可能性があります。 – darol100