FROM CACHE - jp_header
解決済

別々の商品タイプの商品を同時に購入できないようにすることは可能ですか?

takato
観光客
12 1 4

特定の商品タイプAとBの商品を同時に購入できないようにする購入制限をかけたいです。

例えば商品タイプAと商品タイプBがあったとして、商品タイプAの商品同士であれば購入可能、同じく商品タイプBの商品同士でも購入可能だが、商品タイプAの商品と商品タイプBの商品を一回のチェックアウトで同時に購入することはできないようにしたいです。

 

現在はShopifyアプリの「Limitsify – min/max limits」などをテスト環境にインストールして検証していますが、商品タイプごとで数量を制限することはできても特定の組み合わせにおいて商品を購入できなくするという機能はなさそうです。

 

ちなみに商品タイプごとと書きましたが、商品カテゴリーやタグなどによるグルーピングでも問題ないです。

ぜひともお力をお貸しいただけると助かります。

1 件の受理された解決策
takato
観光客
12 1 4

成功

{%- comment -%}
---------------------------------------------------------------------
        同時購入禁止
---------------------------------------------------------------------
{%- endcomment -%}

{%- for item in cart.items -%}
    {%- if item.product.type == '商品グループA' -%}
        {% assign typeA = true %} 
    {%- endif -%}
    {%- if item.product.type == '商品グループB' -%}
        {% assign typeB = true %}
    {%- endif -%}
{%- endfor -%}

{%- unless typeA == true and typeB == true -%}
    購入ボタン
{%- endunless -%}

ありがとうごまいます。無事実装できました!

元の投稿で解決策を見る

4件の返信4

株式会社フルバランス
Shopify Partner
1441 505 644

Liquidの知識がある前提ですが、cart.liquidで、頂いている条件に合致する場合、Checkoutへのリンクを表示しない様にするのが

基本的な対応になると思います

株式会社フルバランス(Shopify Experts)
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『すべてのブランドの特大成長エンジンを搭載する』 株式会社フルバランス
takato
観光客
12 1 4

ご回答いただきありがとうございます。

プログラム知識が浅いもので、「cart.items.product.type」で商品タイプを取得して、商品タイプAと商品タイプBがカート内に混在している場合は購入ボタンを出力しないというようなプログラムになると思うのですが、具体的にどのように組めば良いのかわからず苦戦しております。

 

cart-template.liquidに下記の様なコードを組んでみたのですが、「商品タイプA」「商品タイプB」の部分が日本語なのが原因で 保存すらできません。
そもそもコード自体もあっているのかどうか微妙です、、、

{%- for item in cart.items -%}
  {%- if item.product.type == 商品タイプA -%}
    {% assign typea = true %}
  {%- elsif item.product.type == 商品タイプB -%}
    {% assign typeb = true %}
  {%- endif -%}
{%- endfor -%}
            
{%- unless typea == true and typeb == true -%}
購入ボタン
{%- endunless -%}

 

現在は特定の商品タイプの同士がカートにある時、購入ボタンを消す仕様ですが、ある商品グループAとある商品グループBを同時に購入できないようにするという仕様が実現できましたら、何で区別しても構いません。

お手すきの際に正しいコードの書き方を、ヒントでも構いませんので、教えていただければ幸いです。

junichiokamura
Community Manager
1200 280 506

商品タイプA と 商品タイプB の部分は文字列ですので、  '  で囲む必要があります。保存できないのは、それが原因で構文エラーが出ているためかと思います。

https://shopify.dev/docs/themes/liquid/reference/basics

あとは、ぱっと見た感じ正しいように見えます。

 

Senior Partner Solutions Engineer
takato
観光客
12 1 4

成功

{%- comment -%}
---------------------------------------------------------------------
        同時購入禁止
---------------------------------------------------------------------
{%- endcomment -%}

{%- for item in cart.items -%}
    {%- if item.product.type == '商品グループA' -%}
        {% assign typeA = true %} 
    {%- endif -%}
    {%- if item.product.type == '商品グループB' -%}
        {% assign typeB = true %}
    {%- endif -%}
{%- endfor -%}

{%- unless typeA == true and typeB == true -%}
    購入ボタン
{%- endunless -%}

ありがとうごまいます。無事実装できました!