-1

我一直在遍历集合数组并尝试获取每个集合的产品,但它仍然无法正常工作??

<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>
4

1 回答 1

0

capture命令将捕获{% capture x %}{% endcapture %}作为文本之间的所有内容的输出,并将该文本分配给变量x。所以你的代码:

{% capture collections_list %}
  {% for link in linklists[block.settings.meganav_link].links %}
      {{ link.title }}                
  {% endfor %}
{% endcapture %}

...只会捕获一系列换行符和链接标题,因为这就是要打印的所有文本。

您可能想要做的是获取表示列表中实际项目的对象。快速跳转到Shopify 的 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 Liquid Reference 再次为您提供支持。

希望这可以帮助!

于 2018-07-17T18:07:16.607 回答