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

**URL:** <https://community.shopify.com/t/topic/39365>\
**Category:** 技術的なQ＆A\
**Created:** [March 13, 2021, 3:01am UTC](https://community.shopify.com/t/topic/39365 "2021-03-13T03:01:03Z")\
**Posts on this page:** 5\
**Page:** 1

## AI-generated summary

商品タイプAとB（またはタグ・カテゴリなどで分けた2グループ）の商品を、同一チェックアウトで同時購入できないようにする方法が相談された。既存アプリでは「特定の組み合わせの禁止」までは難しく、テーマ側での制御が主な対応案として示された。

- 提案された方法は、`cart.liquid` / `cart-template.liquid` でカート内商品を走査し、AとBが両方含まれる場合は購入ボタンやCheckoutリンクを表示しない実装。
- `item.product.type` で商品タイプを判定し、該当グループがあれば `assign` でフラグを立てる形が使われた。
- 保存できなかった原因は、`商品タイプA` などの判定値を文字列として `'...'` で囲っていなかったためのLiquid構文エラーだった。

最終的に、商品グループAと商品グループBの両方がカートにあるときだけ購入ボタンを非表示にするコードで実装成功。質問は解決済み。

<div class="post-metadata">

**Author:** ![takato](https://avatars.discourse-cdn.com/v4/letter/t/b9e5f3/32.png) [@takato](https://community.shopify.com/u/takato)\
**Post date:** [March 13, 2021, 3:01am UTC](https://community.shopify.com/t/topic/39365/1 "2021-03-13T03:01:03Z")

</div>

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

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

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

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

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

---

<div class="post-metadata">

**Author:** ![Anonymous\_44fbe07fc59d9ccaacd70575fd5a5155](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/anonymous_44fbe07fc59d9ccaacd70575fd5a5155/32/194200_2.png) [@Anonymous\_44fbe07fc59d9ccaacd70575fd5a5155](https://community.shopify.com/u/Anonymous_44fbe07fc59d9ccaacd70575fd5a5155)\
**Post date:** [March 15, 2021, 2:39pm UTC](https://community.shopify.com/t/topic/39365/2 "2021-03-15T14:39:08Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![takato](https://avatars.discourse-cdn.com/v4/letter/t/b9e5f3/32.png) [@takato](https://community.shopify.com/u/takato)\
**Post date:** [March 21, 2021, 4:43pm UTC](https://community.shopify.com/t/topic/39365/3 "2021-03-21T16:43:34Z")

</div>

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

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

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

```ruby
{%- 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を同時に購入できないようにするという仕様が実現できましたら、何で区別しても構いません。

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

---

<div class="post-metadata">

**Author:** ![junichiokamura](https://yyz1.discourse-cdn.com/shopifyforum/user_avatar/community.shopify.com/junichiokamura/32/299737_2.png) [@junichiokamura](https://community.shopify.com/u/junichiokamura)\
**Post date:** [March 29, 2021, 6:07am UTC](https://community.shopify.com/t/topic/39365/4 "2021-03-29T06:07:56Z")

</div>

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

[https://shopify.dev/docs/themes/liquid/reference/basics](https://shopify.dev/docs/themes/liquid/reference/basics)

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

---

<div class="post-metadata">

**Author:** ![takato](https://avatars.discourse-cdn.com/v4/letter/t/b9e5f3/32.png) [@takato](https://community.shopify.com/u/takato)\
**Post date:** [April 17, 2021, 2:09pm UTC](https://community.shopify.com/t/topic/39365/5 "2021-04-17T14:09:31Z")

</div>

```ruby
{%- 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 -%}

```

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