如果产品标签包含 - 在shopify中

时间:2013-09-16 06:29:10

标签: ruby shopify liquid

因此,如果产品的标签中包含“相关”字样,我基本上会尝试使用shopify的逻辑来显示图像

(有一个json查询可以获取包含'related-x'的标签,其中x是产品的名称,并使用它来显示相关产品。)

在Json查询之前是一个基本上表示“相关产品”的图像。我想做的是只在存在“相关”标签时显示。

我试过这个:

{% if product.tags contains 'related' %}              
          <img src="{{ 'complete-this-look.gif' | asset_url }}" alt="" align="left;" style="vertical-align:top; margin-right:8px; padding-top:0px;" width="130" height="175"/>
{% endif %}

哪个不显示任何内容。我也尝试过:

{% for t in product.tags %}
{% if t contains 'related-' %}
<img src="{{ 'complete-this-look.gif' | asset_url }}" alt="" align="left;" style="vertical-align:top; margin-right:8px; padding-top:0px;" width="130" height="175"/>
{% endif %}
{% endfor %}

但是,每次查询返回相关产品时,都会显示图像。

它后面是什么(图像)(查询结果) - 如果没有查询结果,则它什么都不显示。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

您的第一段代码无效的原因是因为contains正在寻找名为“related”的标记,而不是包含子字符串“related”的标记。

请参阅其中的Shopify Wiki for contains

  

它可以检查另一个字符串中是否存在字符串,或者它可以检查简单字符串数组中是否存在字符串。

在您的实例中,contains正在检查简单字符串数组中的字符串(并且正在查找整个字符串,而不是包含指定字符串作为子字符串的字符串)。

另请参阅Shopify wiki for product.tags

  

返回产品标签的列表(由简单字符串表示)。

     

您可以将contains关键字与简单字符串数组一起使用   您可以将其与产品标签一起使用:

     

{% if product.tags contains 'custom to order' %}
  <!-- Output custom to order form HTML here -->
  {% endif %}

因此,Gerard Westerhof建议在上面的评论中使用Join是一个很好的建议。如果您首先加入product.tags数组,那么contains将在join返回的标记字符串中搜索“相关”字符串。

试试这个:

{% if product.tags | join ' ' contains 'related' %}
    <img src="{{ 'complete-this-look.gif' | asset_url }}" alt="" align="left;" style="vertical-align:top; margin-right:8px; padding-top:0px;" width="130" height="175"/>
{% endif %}

编辑:

请改为尝试:

{% assign product_tags_string = product.tags | join ' ' %}
{% if product_tags_string contains 'related' %}
    <img src="{{ 'complete-this-look.gif' | asset_url }}" alt="" align="left;" style="vertical-align:top; margin-right:8px; padding-top:0px;" width="130" height="175"/>
{% endif %}