3

我正在尝试编写一个简单的 if 语句,但总是与 shopify 的系统斗争。

本质上我希望它这样做:

{% if collection.product == 'discontinued' %} 本产品已停产。{% 万一 %}

如果它在此集合中,则显示此文本/html。否则它不会显示任何东西。这将在 product.liquid 模板中。

有任何想法吗?

4

5 回答 5

8

这就是最终的工作:

{% for c in product.collections %}
{% if c.handle == "discontinued" %}
This product is Discontinued 
{% endif %}
{% endfor %}
于 2013-02-15T15:46:07.013 回答
1

我想这对任何人都有帮助,我在 shopify 网站的侧边栏中使用过。当前的收藏页面将通过以下代码进行检查。

<div class="row-fluid not-animated" data-animate="fadeInUp">
<div class="title">By Collections</div>
<form class="coll">
{% assign col_tags = collection.title %}

{% for collection in collections %}

<input type="radio" value="{{ collection.url }}" name="collections"  {% if col_tags contains collection.title %} checked {% endif %} >{{ collection.title | escape }} <br/>

 {% endfor %}
 </form>

于 2014-04-21T11:38:29.823 回答
0

如果我了解液体集合在 Shopify 中的工作原理,您将需要迭代所有产品。

如果您直接使用集合,则需要执行类似的操作:

{% for product in collection.product %}
  {% if product.tags contains 'discontinued' %}
    This product has been discontinued :(
  {% endif %}
{% endfor %}

如果您只使用单一产品,您可能只使用内部if液体标签部分。

参考:

于 2013-02-07T19:31:19.980 回答
0

您确实可以将已停产的产品添加到称为已停产的集合中。

渲染产品时,您可以按照 csaunders 的建议进行操作,只需遍历已停产集合中的所有产品,并检查当前产品的 id 是否与该集合中的任何产品匹配。如果是这样,做你必须做的。无需使用标签。

于 2013-02-07T22:37:18.040 回答
0

您可以使用 map on 为产品创建一个集合数组product.collections。这将使用您指定的属性创建一个新数组,即每个集合的句柄。

然后,您可以检查这个新数组是否contains是您要使用的句柄。

{% assign productCollections = product.collections | map: "handle" %}
{% if productCollections contains 'your-collection-handle' %} 
  {% comment %} DoSomething {% endcomment %} 
{% endif %}

所以对于你的例子:

{% assign productCollections = product.collections | map: "handle" %}
{% if productCollections contains 'discontinued' %} 
  This product is Discontinued
{% endif %}

如果您的案例不同,您可以映射其他字段,例如标题。

于 2021-07-20T05:00:52.110 回答