【发布时间】:2020-01-08 13:39:07
【问题描述】:
目前正在开发 shopify 主题,我正在尝试隐藏已售罄的产品变体。无论是否重要,主题都是声望。
我正在尝试以简单的方式进行操作,因为没有其他可用的变体适合我。如果产品变体数量为 0,我要做的是向现有类添加一个类。
例子:
{% for variant in product.variants %}
{% if variant.inventory_quantity == 0 %}class{% endif %}{% endfor %}
我的代码看起来如何:
{%- for value in option.values -%}
<li class="HorizontalList__Item {% for variant in product.variants %}{% if variant.inventory_quantity < 1 %}{{ variant.inventory_quantity}}{% endif %}{% endfor %}">
<input id="option-{{ section.id }}-{{ forloop.parentloop.index0 }}-{{ forloop.index0 }}" class="SizeSwatch__Radio" type="radio" name="option-{{ forloop.parentloop.index0 }}" value="{{ value | escape }}" {% if value == option.selected_value %}checked="checked"{% endif %} data-option-position="{{ option.position }}">
<label for="option-{{ section.id }}-{{ forloop.parentloop.index0 }}-{{ forloop.index0 }}" class="SizeSwatch">{{ value }}</label>
</li>
{%- endfor -%}
我使用 {{variant.inventory_quantity }} 来查看返回的内容,结果全部返回 0。然后我删除了 {% if variant.inventory_quantity
由于 option.values -%} 中的 {%- for value ,它会一次检查所有内容并添加所有列表的类,即使变量库存数量为 0 或不为 0。
如果 variant.inventory_quantity == 0,有没有办法将该类附加到代码之外的列表中?
或者如果选项被禁用以完全隐藏列表?因为我在这里检查变体是否可用:
<select id="product-select-{{ product.id }}" name="id" title="Variant">
{%- for variant in product.variants -%}
<option {% if variant == selected_variant %}selected="selected"{% endif %} {% unless variant.available %}disabled="disabled"{% endunless %} value="{{ variant.id }}" data-sku="{{ variant.sku }}">{{ variant.title }} - {{ variant.price | money }}</option>
{%- endfor -%}
</select>
在我的例子中,产品变体 38 的数量为 0。链接到示例 https://lizzetstore.ro/collections/paltoane/products/palton-asimetric-negru
【问题讨论】:
-
当您处理乘法选项(也就是颜色/尺寸/等等)时,最好使用 JS 来设置已售出的类。如果不至少依赖一些 JS 逻辑,只使用液体几乎是不可能的。因此,当用户选择不同的尺寸/颜色并且该组合可用时,您的逻辑将失败。 (除非您为不同的选项组合创建不同标记的多重组合 - 我不推荐它)
-
我只有一个变体选项,即尺寸,当客户想要查看产品并且变体有 0 库存时,我想实现隐藏,现在它正在检查变体是否有库存但是当您按下 0 库存的变体时,它只会禁用购买按钮。我想要的只是隐藏它,根本不显示它。我只有一个选择,我不知道如何实现。