【问题标题】:How to combine for and where clause in Liquid如何在 Liquid 中结合 for 和 where 子句
【发布时间】:2017-04-26 17:58:11
【问题描述】:

我目前正在开发一个 shopify 网站,需要在产品页面上创建一个过滤器。我的目标是让底漆出现在产品系列页面的不同部分。我遇到的问题是如何过滤引物。我们在产品页面中设置了一个名为“Primer”的标签。我想要的是让循环检查产品是否具有底漆标签,如果有,则将其显示为循环中的产品之一。我对 Liquid 比较陌生,所以如果可能的话,我不知道如何组合子句。我查过“Where”子句,但不完全明白它是如何工作的。

下面是代码:

<div class="{% if settings.show_collection_sidebar %}desktop-10{% else 
%}desktop-12{% endif %} tablet-6 mobile-3" id="bside">

<div id="product-loop">
  {% for product in collection.products %}
    <div class="product {% if settings.products_per_row  == '3' %}
                desktop-4{% cycle ' first', '', ' last' %}
              {% elsif settings.products_per_row == '4' %}
                desktop-3{% cycle ' first', '', '', ' last' %}
              {% endif %} tablet-half mobile-half"
         id="prod-{{ product.id }}" 
         data-alpha="{{ product.title }}" 
         data-price="{{ product.price }}">

      {% include 'product-listing' %}
    </div>
  {% endfor %}
</div>

</div>

我怎样才能过滤出想要的结果?我已经在很多地方尝试过{% if product.tags contains 'Primer' %},但无济于事。

感谢您的帮助。

【问题讨论】:

  • 这段代码来自哪个页面?收藏页面还是产品页面?

标签: shopify liquid


【解决方案1】:

您是否考虑过使用两个集合来完成您所追求的目标?

如果您为所有引物创建了一个动态(“智能”)集合(假设集合的句柄是“引物”),您可以随时通过 Liquid 访问该集合:

{% assign primer_collection = collections['primer'] %}
{% for product in primer_collection.products %}
<h2>HAVE SOME {{ product.title }}!</h2>
{% endfor %}

然后,如果您想从主系列中排除所有初级产品,请创建一个名为“all”的系列(或至少使用句柄“all” - 实际标题并不重要 - 见脚注) .默认情况下,“All”系列是名副其实的商店中的所有产品。但是,如果您创建自己的“所有”集合,则可以将其定义为“除某些项目之外的所有内容” - 在您的情况下,“除入门之外的所有内容”

让 Shopify 通过集合本身为您预先过滤所有内容,大大减少了在事后尝试应用过滤器以及处理误导性项目计数、不均匀分页等问题。

  • 句柄:在 Shopify 后台中每个集合和产品的底部是 SEO 设置。编辑这些允许您更改集合/产品的句柄是什么,这就是 Shopify 用来在内部查找您的集合/产品的方法

【讨论】:

    猜你喜欢
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2020-09-12
    • 2012-03-05
    相关资源
    最近更新 更多