我一直在遍历集合数组,并尝试获取每个集合的产品,但仍然无法正常工作?
<div class="products_nav">
{% capture collections_list %}
{% for link in linklists[block.settings.meganav_link].links %}
{{ link.title }}
{% endfor %}
{% endcapture %}
{% assign collections_array = collections_list %}
{% for products in collections_array %}
{% for category in products %}
{% for product in collections[category].products %}
{% include 'product-grid-item' %}
{% endfor %}
{% endfor %}
{% endfor %}
</div>
答案 0 :(得分:0)
capture
命令将捕获{% capture x %}
和{% endcapture %}
之间的所有内容作为文本并将其分配给变量x
。所以你的代码:
{% capture collections_list %}
{% for link in linklists[block.settings.meganav_link].links %}
{{ link.title }}
{% endfor %}
{% endcapture %}
...将仅捕获一系列换行符和链接标题,因为这就是所有要打印的文本。
您可能想要做的是获取代表列表中实际项目的对象。快速浏览Shopify's Liquid Reference可以告诉我们link
对象具有一个方便地称为object
的属性,该属性引用链接所指向的内容-可以是产品,集合,页面或博客。
如果您知道每个链接都将是一个集合,则可以编写如下内容:
{% for link in linklists[block.settings.meganav_link].links %}
<h2>{{ link.title }}</h2>
{% assign linked_collection = link.object %}
{% for product in linked_collection.products %}
{% include 'product-grid-item' %}
{% endfor %}
{% endfor %}
如果您的链接列表更加复杂并且对象类型混合在一起,则您可能需要检查link.type
并进行适当的处理。再说一遍,Shopify液体参考物会涉及到各种可能的类型。
希望这会有所帮助!