Code Depot

  • Web Dogear Top
  • コードデポ
  • 【Shopify Liquid】コレクション内の商品から特定のバリエーションの値を取得して処理(バリエーションを基準に並び替え)

【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 -%}