首页 > 解决方案 > Shopify:在购物车中按产品标签隐藏结帐按钮

问题描述

当购物车中有带有预购产品标签和常规产品标签的产品时,我想隐藏购物车按钮。

这段代码,我们能够获取购物车中所有产品的标签。

{% for item in cart.items %}
    {% assign carttag = item.product.tags %}                
    <p>{{ carttag }}</p>
{% endfor %}

但是,以下代码不起作用。

  {% if carttag contains 'Preorder' and carttag contains 'Regular' %}
    <p>Stop!</p>               
  {% else %}
     <input type="submit" name="checkout"> 
  {% endif %}

如何将所有循环值作为一个处理?

标签: shopifyshopify-template

解决方案


您走在正确的道路上,但您的代码有 2 个问题。

  1. 您正在覆盖每个产品的购物车标签值。因此,您始终拥有购物车中最后一个产品的产品标签。
  2. product.tags在您将其视为字符串时返回 Array。

解决这些问题,您的代码将如下所示

{% assign cartTags = "" %}

{% for item in cart.items %}
    {% assign joinedTags = item.product.tags | join: " " %}                
    {% assign cartTags = cartTags | append:" " | append:joinedTags %}
{% endfor %}

{% if cartTags contains 'string1' and cartTags contains 'string2' %}
    {{cartTags}}
{% endif %}

我在这里所做的是,初始化了一个名为 cartTags 的空变量。然后对于购物车中的每个产品,我使用连接过滤器将标签数组转换为字符串,并使用附加过滤器将它们添加到所有标签中。

产品标签

加入过滤器

附加过滤器


推荐阅读