2016-11-14 2 views
0

Ich fragte mich, ob jemand wusste, ob ich auf JSON in Liquid zugreifen kann, wie im folgenden Beispiel.Zugriff auf JSON-Klumpen in Metafields mit Shopify Liquid-Vorlagen

Ich habe eine MetaField für die Lieferanten-Seite mit dem Namespace suppliers_details, mit dem Schlüssel suppliers und dem Wert erstellt:

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

In der Vorlage habe ich:

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

Dies gilt nicht arbeiten, da ich die Daten nicht in ein Format ändern kann, mit dem die Vorlage iterieren kann, gibt es eine Möglichkeit, dies zu tun?

Prost

Antwort

0

Es gibt keine Möglichkeit, eine JSON mit Flüssigkeit oder zumindest nicht eine Standardmethode zu analysieren.

können Sie einen Code schreiben Sie es in mehrere Teile zu spalten, aber Sie werden die Objekte nicht an die Kette in der Lage:

{% 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 %} 

Sie das gewünschte Ergebnis erhalten, aber nicht die gleiche Art und Weise vorgestellt Sie es.

Die beste Methode besteht darin, die Zeichenfolge an Javascript zu übergeben, dort zu parsen und das DOM über JS aufzufüllen.

+0

Danke. Und es gibt keine Funktionalität mit Shopify, um YAML-Dateien einzubinden und zu analysieren (wie es Jekyll erlaubt)? –

+0

Nein natürlich nicht. Warum sollte Shopify ein Format verwenden, das im Browser kein Analog ist? JSON ist die Standarddatenstruktur für clientseitige Berechnungen im Browser, sodass Sie JSON erhalten. Und da JSON eine Zeichenkette ist, haben wir Glück, dass wir sie in Metafields speichern und dann die Daten darin mit unserem vertrauenswürdigen JS rendern. –

+0

Ein Problem beim Aufbau von JS ist SEO. Wenn dies ein Menü oder etwas ist, das SEO-freundlich sein muss, kann es Ihre SEO beeinflussen. – darol100

Verwandte Themen