除非条款在收集页面留下空白

时间:2017-05-02 17:57:21

标签: shopify liquid

我前几天询问过如何在收藏页面中加入where子句,但我决定废弃这条路线。我现在只是在页面中使用unless逻辑。除了一个小小的缺陷外,这条路线起作用了。当我在collection.liquid页面中包含unless子句时,网格仍然留下一个空白空间,其中被忽略的产品通常会被放置,并且还包括在计数中。如何让这个空间消失,我怎样才能将它包含在产品数量中?似乎,除非条款只是阻止它出现,而不是真正排除它。

以下是代码:

<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 %}
        {% unless product.title contains "Sampler" %}
            <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>
        {% endunless %}
        {% endfor %}
    </div>
</div>

我试过在产品循环之外的for循环之外移动除非代码的地方,但没有任何效果。

谢谢, RDV

1 个答案:

答案 0 :(得分:0)

你写的应该正在工作 - 我会检查你的产品列表代码段中是否有引用forloop.index的内容,因为索引是一个即使你已经增加的变量在那次迭代中没有做任何事情。

为了清洁液体代码,我通常使用continue语句,这样我就不会用液体标签包装潜在的巨大代码块 - 我发现它很难跟踪所有开口如果我做的是中等复杂的东西,那么在液体中关闭。因此,使用此示例,您可以考虑unless

,而不是使用{% if product.title contains 'Sampler' %}{% continue %}{% endif %}

但所有这些都忽略了我们可以使用的最强大的工具 - 确保该系列首先只包含正确的产品!

我假设您正在使用此代码查看“所有产品”集合。默认情况下,商店中有一个名为“All”的隐藏集合,如果名称正确,则包含在线商店中可见的每个产品。但是,您可以通过将自己的集合命名为“All”来覆盖它(具体来说,使用'all'句柄 - 只要这是句柄,实际标题就无关紧要了)。如果你想要“All”的意思是“所有不是采样器的东西”,只需制作一个条件为“产品标题不包含'样品'”的“智能系列” - 并且vo!没有什么可以跳过的,总计数总是正确的!