[Shopify]カートで既にカート追加商品は商品一覧から非表示にできるクロスセルを作ってみる(Dawn)55/100
こんにちは。Shopify専門エンジニアのまりん(@crowd37cord)です。
カートページにカートに表示したいコレクション一覧を作ってクロスセルっぽくしていましたが、さらに、追加されている商品IDと照合して、クロスセル側は既にカートに入っている商品は表示しないで他の商品のみ表示するようにしてみました。
✔️今回のゴール
デモページ(PW:stahsk40jw1Mf)
https://malins-100.myshopify.com/
✔️CMSの特徴
※CMS作業中はアイテム表示数を触っても、コレクションに設定している商品が全て表示されます。保存したらちゃんと設定されてます。
✔️設置手順
◆事前にjQuery入れて下さい
◆事前準備2 カートで表示するクロスセル用のコレクションを作成しておく
今回ご紹介するのは、カートで表示する商品はコレクションで予め商品を設定しておくパターンなのでコレクション作っておいてね。
Step1 新規section追加
管理画面>テーマ>コード編集>Section>新しいSection作成
Step2 コードをコピペ
今回はデフォルトのfeatured-product.liquidのコードを使います。
いらないところは削除して、商品ID照合するところだけ追加した感じです♪
ちょっと、余談。。。
===========
テックな話ですが、商品IDを照合するコードはこちら。
{% assign itemProductIds = "" %}
{% for item in cart.items %}
{% assign itemProductId = item.product.id %}
{% assign itemProductIds = itemProductIds | append: ',' | append: itemProductId %}
{% endfor %}
{% for item in cart.items %}
{% assign itemProductId = item.product.id %}
{% assign itemProductIds = itemProductIds | append: ',' | append: itemProductId %}
{% endfor %}
で、カートに追加されている商品のIDを{% assign itemProductIds = "" %}に格納。
別の要素、商品を一つずつ表示するところで、itemProductIdsを使います。
<ul class="flex__col cart__crosssell_newlist" role="list">
{%- for product in section.settings.collection.products -%}
{% unless itemProductIds contains product.id %}
<li class="grid__list">
{% render 'card-product',
card_product: product
%}
</li>
{% endunless %}
{%- endfor -%}
</ul>
{% unless itemProductIds contains product.id %}
ここで商品の出し分けを行っています。
==================
フルバージョンのコードをそのままコピペしていただくと使用できます。
先ほど作成した、Sectionリキッドファイルにコピペしてください。
ここから先は
3,650字
この記事が気に入ったらサポートをしてみませんか?