首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除非子句在集合中保留空白页

除非子句在集合中保留空白页
EN

Stack Overflow用户
提问于 2017-05-03 01:57:21
回答 1查看 195关注 0票数 0

前几天我问过在集合页面中加入where子句,但决定放弃这条路线。我现在只在页面中使用unless逻辑。除了一个小小的缺陷,这条路已经成功了。当我在collection.liquid页面中包含unless子句时,网格仍然会在被忽略的产品通常所在的位置留下一个空白区域,并将其包括在计数中。我如何才能让这个空间消失,如何让它不包括在产品数量中?看起来,除非子句只是阻止它出现,而不是真正地排除它。

代码如下:

代码语言:javascript
复制
<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循环和product循环之外的unless代码所在的位置移动,但都没有成功。

谢谢,RDV

EN

回答 1

Stack Overflow用户

发布于 2017-05-03 23:48:28

您编写的内容应该是有效的-我将检查您的产品清单片段中是否有任何引用forloop.index的内容,因为索引是一个变量,即使您在该迭代中没有执行任何操作,该变量也会递增。

为了保持liquid代码的整洁性,我通常使用continue语句,这样我就不会用liquid标记包装可能很大的代码块--我发现,如果我要做一些中等复杂的事情,就很难跟踪liquid代码中的所有开头/结尾。因此,在这个示例中,您可以考虑{% if product.title contains 'Sampler' %}{% continue %}{% endif %},而不是使用unless

但所有这些都忽略了我们拥有的最强大的工具--首先确保集合中只包含正确的产品!

我假设您正在使用此代码查看您的“所有产品”集合。默认情况下,你的商店中有一个名为"All“的隐形集合,它名副其实地包含了在线商店中可见的所有产品。但是,您可以通过将自己的集合命名为'All‘来覆盖它(具体地说,使用句柄'all’-只要这是句柄,实际的标题就不重要了)。如果你想让"All“的意思是”所有不是采样器的东西“,只需创建一个"Smart Collection”,条件是"Product title not CONTAIN 'Sample'“--瞧!没有什么可以跳过的,总计数永远是正确的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43744319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档