6

因此,如果产品的标签包含“相关”字样,我基本上是在尝试使用 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 %}

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

我追求的是它去(图片)(查询结果) - 如果没有查询结果,那么它什么也不显示。

有任何想法吗?

4

1 回答 1

8

您的第一段代码不起作用的原因是因为contains正在寻找一个名为“相关”的标签,而不是包含子字符串“相关”的标签。

请参阅Shopify Wiki 以了解其中的说明:

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

在您的实例中,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 %}
于 2013-09-17T00:14:53.873 回答