大卡特尔 - 如果一个选项缺货,则隐藏所有选项

时间:2017-01-11 03:32:16

标签: ruby product bigcartel

我正试图争论如果产品页面上的任何产品选项售罄,那么添加到购物车按钮并且不显示选项下拉列表,而是显示售完的div。如果没有选项,那么它将显示添加到购物车按钮,如果产品有库存,但我无法让它工作。

我觉得我很亲密。我已经能够使它工作如果产品没有选项然后它显示添加到卡按钮,如果产品售出任何选项显示'已售出',但如果所有选项都有库存它将显示选项选择器和添加到购物车按钮的次数与选项一样多 (例如:如果产品有2个选项页面将显示:

选项选择器
加入购物车按钮
选件选择器
添加到购物车按钮)

{% when 'active' %}
<form id="product-form" method="post" action="/cart">
{% for option in product.options %}

{% if product.has_default_option %}

{{ product.option | hidden_option_input }}

<button class="button" id="product-addtocart" name="submit"    
type="submit">Add to cart</button>

{% endif %}

{% if option.sold_out %}

{{ product.option | hidden_option_input }}
    <div class="sold">
      <h4><span>Sold</span></h4>
    </div>
{% endif %}
{% if option.sold_out == false %}

<div id="product-options" class="options">
{{ product.options | options_select }}
</div><br>
<button class="button" id="product-addtocart" name="submit"    
type="submit">Add to cart</button>

{% endif %}

{% endfor %}
{% if product.on_sale %}<div>On Sale</div>{% endif %}   
</form>

1 个答案:

答案 0 :(得分:1)

我尝试以下内容。我还没有通过测试来确保has_default_option条件设置正确,但这只是为了说明使用变量赋值(inStock)跟踪库存的想法。

{% assign inStock = true %}
{% for option in product.options %}
    {% if option.sold_out %}
        {% assign inStock = false %}
    {% endif %}
{% endfor %}

{% if inStock %}
    <form id="product-form" method="post" action="/cart">
        {% if product.has_default_option %}
            {{ product.option | hidden_option_input }}
        {% else %}
            <div id="product-options" class="options">
                {{ product.options | options_select }}
            </div>
        {% endif %}
        <button class="button" id="product-addtocart" name="submit" type="submit">Add to cart</button>
        {% if product.on_sale %}<div>On Sale</div>{% endif %}
    </form>
{% else %}
    <div class="sold">
        <h4><span>Sold</span></h4>
    </div>
{% endif %}