2012-11-30 7 views
2

액체로 된 물체 목록을 특정 형식으로 페이지에 표시 할 수 있어야합니다.액체 물체에서 고유 한 데이터 나열

목록 범주 이름 (page.category.name)

목록 각 하위 범주 이름 : 나는 개체 (페이지)의 배열이있는 경우

, 나는 다음과 같은 방식으로 인쇄 할 수 있어야합니다 각 하위 카테고리 이름 (page.subcategory.name 및 page.title) 아래에 페이지 목록이 있습니다.

일반적으로 루비에서는 페이지를 그룹화하기 만하지만 액체에서는 할 수 없습니다. 내가 시도한 다른 것은 페이지의 범주와 하위 범주의 고유 목록을 캡처하는 것이지만 배열에서 항목의 고유 목록을 가져 오는 방법을 찾지 못했습니다. 어떤 도움이라도 도움이 될 것입니다.

답변

5

귀하의 질문에 대한 답변에 조금 늦었습니다.하지만 다른 사람이 같은 문제로 고생하는 데 도움이 될 수 있습니다. Liquid 논리가 그렇듯이 약간의 해킹이지만, 적어도 Shopify에서는 작동합니다.

pages = [ 
    { name: 'Page 1', category: { name: 'pants' } }, 
    { name: 'Page 2', category: { name: 'pants' } }, 
    { name: 'Page 3', category: { name: 'shoes' } }, 
    { name: 'Page 4', category: { name: 'shirts' } }, 
    { name: 'Page 5', category: { name: 'shoes' } } 
] 

이 코드는 고유 한 범주 이름을 반환합니다 :

이처럼 보이는 '페이지'배열을 가정

{% assign delimiter = "," %} 
{% assign names_str = "" %} 
{% assign names = pages | map: 'category' | map: 'name' %} 

{% for name in names %} 
    {% assign names_arr = names_str | split: delimiter %} 
    {% unless names_arr contains name %} 
     {% assign names_str = names_str | append: delimiter | append: name %} 
    {% endunless %} 
{% endfor %} 
{% assign names_uniq = names_str | remove_first: delimiter | split: delimiter %} 

결과 :

names_uniq => [ 'pants', 'shoes', 'shirts' ] 
+0

감사합니다! 실제로 이것이 진보 된 것을 짜증나게하고'{% assign names_uniq = names | 독특한 %}'필터 :-( –

관련 문제