2

液体のオブジェクトのリストを取得し、特定の形式でページに表示できるようにする必要があります。

オブジェクト (ページ) の配列がある場合、次の方法でそれらを印刷できる必要があります。

カテゴリ名の一覧表示 (page.category.name)

各サブカテゴリ名の下にページのリストを含む各サブカテゴリ名をリストします (page.subcategory.name および page.title)

通常、ルビーではページをグループ化するだけですが、リキッドではそれができません。私が試したもう 1 つのことは、ページのカテゴリとサブカテゴリの一意のリストを取得することでしたが、配列から項目の一意のリストを取得する方法が見つかりませんでした。どんな提案の助けも素晴らしいでしょう。

4

1 に答える 1

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' ]
于 2013-07-09T16:50:20.220 に答える