Большой картель — скрыть все варианты, если одного нет в наличии.

Я пытаюсь привести аргумент, согласно которому, если какой-либо вариант продукта на странице продукта распродан, кнопка «Добавить в корзину» и раскрывающийся список параметров не отображаются, а вместо этого отображается распроданный 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>

person PinMail Gear    schedule 11.01.2017    source источник


Ответы (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 %}
person Connor Burns Munro    schedule 24.01.2017
comment
Я никогда не думал о таком присвоении переменной. Спасибо. Это работает отлично. - person PinMail Gear; 24.01.2017