2016-11-14 1 views
0

Мне было интересно, если кто-нибудь знает, могу ли я получить доступ к JSON в Liquid, например, пример ниже.Доступ к кускам JSON в метафилах с помощью шаблонов Shopify Liquid

Я создал metafield для страницы поставщиков с пространством имен 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 %} 

Это не работать, так как я не могу изменить данные в формате, который шаблон может использовать для повторения, есть ли способ сделать это?

Приветствия

ответ

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, проанализировать ее и заполнить DOM через JS.

+0

Спасибо. И нет никакой функции, использующей Shopify для включения файлов YAML и анализа их (как позволяет Jekyll)? –

+0

Нет, конечно, нет. Почему Shopify использует формат, который не имеет аналога в браузере? JSON - стандартная структура данных для клиентских вычислений в браузере, поэтому вы получаете JSON. И поскольку JSON - это строка, нам повезло, что мы храним их в метафилях, а затем приводим данные в нашем надежном JS. –

+0

Одной из проблем с построением его с помощью JS является SEO. Если это меню или что-то, что должно быть оптимизировано для SEO, то его создание с помощью JS может повлиять на ваш SEO. – darol100

Смежные вопросы