我要通过“链接列表集合”显示产品吗?

时间:2018-07-11 12:55:37

标签: php shopify shopify-app shopify-template shopify-activemerchant

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

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

1 个答案:

答案 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液体参考物会涉及到各种可能的类型。

希望这会有所帮助!