前几天我问过在集合页面中加入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循环和product循环之外的unless代码所在的位置移动,但都没有成功。
谢谢,RDV
发布于 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'“--瞧!没有什么可以跳过的,总计数永远是正确的!
https://stackoverflow.com/questions/43744319
复制相似问题