我很想购物。我试图限制产品的输出,例如每个标签的4个产品。但似乎有变量让我循环.. 谁有人可以帮忙? THX。
{% for tag in collection.all_tags %}
{% if current_tags contains tag %}
<li class="active">{{ tag | link_to_remove_tag: tag }}</li>
{% else %}
<li>{{ tag | link_to_add_tag: tag }}</li>
{{ tag }}
{% if collection.products.size > 0 %}
<ul class="product-grid just">
{% for product in collection.products %}
{% if product.tags contains tag %}
<li>{% include 'product-grid-item' %}</li>
{% endif %}
{% endfor %}
</ul>
{% else %}
<p><strong><br/>No products found in this collection.</strong></p>
{% endif %}
{% endif %}
{% endfor %}
答案 0 :(得分:2)
limit
parameter可用于显示集合中的前4个产品:
{% for product in collection.products limit:4 %}
但是,如果您需要显示具有给定标签的有限数量的产品,则需要实施自己的计数器。有关如何执行此操作的示例,请在Shopify论坛上See this discussion。
E.g。
{% for tag in collection.all_tags %}
{{ tag }}
{% assign counter = 0 %}
{% for product in collection.products %}
{% if product.tags contains tag and counter < 4 %}
<li>{% include 'product-grid-item' %}</li>
{% assign counter = counter | plus: 1 %}
{% endif %}
{% endfor %}
{% endfor %}
答案 1 :(得分:0)
为了实现良好的分离,逻辑显示多少项目最好放在&#34; List&#34;已准备好输出。
这样你就不必在视图中做与内容相关的数学,这从来都不是一个好主意,因为它没有把代码放在它所属的地方和其他人想要的改变一些东西可能有困难找到它。话虽这么说,你可以在将对象交给渲染之前根据配置的后端参数对collection.products对象设置限制,或者你进一步回过头来干预从数据库中获取产品&#34;指向并限制/改变结果。 ;)
确实有可能使用递增计数器并在模板中停在4但我几乎不建议使用它,因为它不是逻辑应该在哪里。模板应该显示,而不是想要显示什么,否则它很难重复使用。