2016-11-14 4 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로 구축 할 때의 한 가지 문제점은 SEO입니다. 이것은 메뉴 또는 JS 또는 JS와 그것을 구축하는 SEO에 영향을 미칠 수있는 SEO 친밀해야 할 일이 있다면. – darol100