【Shopify Liquid】コレクション内の商品から特定のバリエーションの値を取得して処理(バリエーションを基準に並び替え)
Published: Updated:
コレクション内の商品から特定のオプション(例:サイズ、色など)の値を収集し、その値ごとにバリアントを処理する仕組みです。
whereフィルターを使って配列から条件に一致するオブジェクトを抽出(配列)
Shopify Liquid
{%- assign option_title = 'オプションタイトル' -%}
{%- assign option_value = blank -%}
{%- for product in collection.products -%}
{%- unless product.has_only_default_variant -%}
{%- assign option_position = 0 -%}
{% for option in product.options_with_values %}
{%- if option.name == option_title -%}
{%- assign option_position = option.position -%}
{% for val in option.values %}
{%- assign option_value = option_value | append: ',' | append: val -%}
{% endfor %}
{%- endif -%}
{% endfor %}
{%- endunless -%}
{%- unless option_value == blank -%}
{%- assign option_value = option_value | remove_first: ',' -%}
{%- assign option_value = option_value | split: ',' -%}
{%- for option_values in option_value -%}
{%- assign get_option_positon = 'option' | append: option_position -%}
{% assign filtered_variants = product.variants | where: get_option_positon, option_values %} #配列として取得
{%- for variants in filtered_variants -%}
# オプションタイトルの値ごとの処理
{%- endfor -%}
{%- endfor -%}
{%- endunless -%}
{%- endfor -%}