在shopify的收集页面中显示变体选项

时间:2019-10-22 04:14:58

标签: html shopify liquid

我知道这个问题在互联网上被问过百万遍,但似乎每个人都希望有一个自己的解决方案。我找不到我真正需要的东西。

所以我用这段代码在我的收藏中显示了变体,然后添加到购物车中。

<form action="/cart/add" method="post" style="text-align:center;">
   
  <select name="id">
  {% for variant in product.variants %}
    {% if variant.available %}
    <option value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money }}</option>     
    {% else %}
    <option disabled="disabled">{{ variant.title }} - Sold Out</option>
    {% endif %}
  {% endfor %}
    </select>          
          
        
  <input type="submit" value="Add to cart" class="btn" />
    
</form>

这有效,但是在下拉菜单中,它像这样给我:

xs / Black - $72.00     
small / Black - $61.00     
medium / Black - $52.00     
large / Black - $74.00     
xl / Black - $77.00     
xxl / Black - $55.00     
xs / Blue - $72.00    
small / Blue - $72.00     
medium / Blue - $72.00     
xl / Blue - $72.00    
xxl / Blue - $72.00    

我想要的是让客户在不同的下拉列表中分别选择尺寸和颜色,然后单击“添加到购物车”。

我到处都在寻找如何做到这一点的运气。请帮忙。 如果有帮助,我的Shopify主题为“首次亮相”。

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

<form action="/cart/add" method="post" style="text-align:center;">

  <select name="id" id="{{ product.handle }}" style="display: none;">
  {% for variant in product.variants %}
    {% if variant.available %}
    <option value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money }}</option>     
    {% else %}
    <option disabled="disabled">{{ variant.title }} - Sold Out</option>
    {% endif %}
  {% endfor %}
    </select>          

  <input type="submit" value="Add to cart" class="btn" />

</form>

然后在页面末尾添加脚本:

{{ 'option_selection.js' | shopify_asset_url | script_tag }}
<script>
    var all_products = { {% for product in collection.products %}'{{ product.handle }}': {{ product | json }},{% endfor %} };
    for(curr_product in all_products){
      new Shopify.OptionSelectors(curr_product, {
        product: all_products[curr_product]
      });
    }
</script>

我们依靠Shopify函数new Shopify.OptionSelectors来将每个选择拆分为一个单独的选择。不要忘记将id="{{ product.handle }}"添加到主选择中。

整个代码:

{%- for product in collection.products -%}
    <form action="/cart/add" method="post" style="text-align:center;">

    <select name="id" id="{{ product.handle }}" style="display: none;">
    {% for variant in product.variants %}
    {% if variant.available %}
    <option value="{{ variant.id }}">{{ variant.title }} - {{ variant.price | money }}</option>     
    {% else %}
    <option disabled="disabled">{{ variant.title }} - Sold Out</option>
    {% endif %}
    {% endfor %}
    </select>          
    <input type="submit" value="Add to cart" class="btn" />

    </form>
{% endfor %}

{{ 'option_selection.js' | shopify_asset_url | script_tag }}
<script>
    var all_products = { {% for product in collection.products %}'{{ product.handle }}': {{ product | json }},{% endfor %} };
    for(curr_product in all_products){
      new Shopify.OptionSelectors(curr_product, {
        product: all_products[curr_product]
      });
    }
</script>

答案 1 :(得分:0)

要在单独的模块中获取它,必须迭代产品选件(最多3个),以便分别显示尺寸和颜色。

{{1}}