「全ての商品(/collections/all)」で条件に応じて商品を出し分ける方法

現在テーマ開発を行っております。

・やりたいこと

Customerにつけているタグと同じタグを持ったProductのみを/collections/all で表示させたい

(例)

グループAとグループBがあり、Customerはアカウント作成時にどちらかに属し、タグが付与される。

Productも登録時に、どちらのグループに向けた商品かを判別すべくタグを付与する。

グループAのタグが付いたProductはグループAのタグが付いたCustomerにしか表示されない。

グループBについても同様。

・現状

EasyLockdownというアプリでアクセス制限をかけて商品の詳細は閲覧できない状態にはなりました。

このアプリには下記画像のような設定項目があります。

「ロックの掛かったものを検索やコレクションに表示させるかどうか」という項目です。

現在は画像の通りチェックをいれても表示されてしまいます。

・知りたいこと

そもそも「collection.products」を条件に応じてproductの出し分けが可能なのか。

似たようなものを再現する際のベストプラクティスがあれば。

よろしくお願いいたします。

そもそも「collection.products」を条件に応じてproductの出し分けが可能なのか。

はい、下記は一例ですが、collectionページにてお客様に付与されたタグと商品に登録されたタグを一致させるなどの方法で商品の出しわけは可能です。

コード例:

{% for tag in customer.tags %}
{% if tag contains “product__” %}
{% assign customerTag = tag | split: “product__” | last %}
{% endif %}
{% endfor %}

{% for product in collection.products %}

{% if product.tags contains customerTag %}

商品を表示

{% endif %}

{% endfor %}

こちらで商品の出しわけ自体は可能ですが、検索に引っかからないようにする、商品の詳細ページを閲覧できないようにする、などの処理が必要な場合は、頂いているようなアプリを利用する形が良いと思います。

1 Like

ご返信ありがとうございます。

内容を確認させていただきました。

コード例までありがとうございます。

customer.tagsから該当のtagを抽出し、product.tags contains で商品の出し分けをしていることは理解できました。

その他の方のご意見等があればそちらも拝見した後、ベストソリューションとさせていただければと思います。