【问题标题】:Shopify If in collection then display thisShopify 如果在集合中,则显示此
【发布时间】:2013-02-07 18:50:06
【问题描述】:

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

基本上我希望它这样做:

{% if collection.product == '停产' %} 该产品已停产。 {% endif %}

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

有什么想法吗?

【问题讨论】:

    标签: shopify


    【解决方案1】:

    这就是最终的工作:

    {% for c in product.collections %}
    {% if c.handle == "discontinued" %}
    This product is Discontinued 
    {% endif %}
    {% endfor %}
    

    【讨论】:

      【解决方案2】:

      我想这对任何人都有帮助,我在 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>
      

      【讨论】:

        【解决方案3】:

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

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

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

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

        参考资料:

        【讨论】:

        • 所以您认为除了使用标签之外,没有其他方法可以在产品页面上定位集合?我的意思是我可以为停产的产品使用标签,但更愿意通过将它们添加到停产的“集合”来定位它们。希望这是有道理的..
        • 哦,当然你也可以这样做。但是您需要检查集合的标题,而不是产品 :)
        • 我已经完成了这个特别的code: {% for product in collections['discontinued'].products %} This product has been discontinued :( {% endfor %} 但它试图显示停产产品的列表,而不仅仅是显示我的信息。不过,我仍在努力解决这个问题。
        • 哦,它适用于所有产品,无论它在哪个系列中。真的不喜欢 Shopify 的设置方式。
        • 一旦您克服了 Liquid 的初始学习曲线并使用模板,您可能会喜欢它。在大多数情况下,替代方案要糟糕得多。
        【解决方案4】:

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

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

        【讨论】:

        • 如果您有大量产品,这会影响性能。遍历产品所属的集合比遍历集合中的所有产品更容易/更快
        • 我不同意这种情况。你能证明你的建议更快吗?
        • 我不是数学天才,但是...假设您正在循环浏览一个集合中的 5,000 种产品,并且您正在比较产品 ID 是否与其中一个与产品所属的匹配3 个系列,您正在比较这 3 个系列中的一个是否“打折”。循环 5,000 会比循环 3 更快吗?
        【解决方案5】:

        您可以使用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 %}
        

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

        【讨论】:

          猜你喜欢
          • 2018-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-17
          • 1970-01-01
          • 1970-01-01
          • 2017-03-16
          • 1970-01-01
          相关资源
          最近更新 更多