我有一个包含收藏列表的菜单(linklists.all-collections
)。菜单使用collection.all_tags
输出集合标题,网址以及与集合关联的所有标记。
菜单输出正常,但是下次我在集合模板页面上调用collection.title
时,它会在菜单中输出最后一个集合标题,而不是当前集合页面的集合标题。
有没有办法关闭循环(类似于WordPress wp_reset_query()
如何破坏上一个查询并设置新查询)?
菜单是:
<ul>
{% for link in linklists.all-collections.links %}
{% assign collection = link.object %}
<li class="sidebar-menu-item {{ collection.handle }}">
<a href="{{ collection.url }}" title="{{ 'collections.general.link_title' | t: title: collection_title }}">{{ collection.title }}</a>
<ul>
{% for tag in collection.all_tags %}
{% unless tag == 'exclude' %}
<li>
<a href="{{ shop.url }}/collections/{{ collection.handle }}/{{ tag }}">{{ tag }}</a>
</li>
{% endunless %}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
答案 0 :(得分:2)
问题是由这一行引起的:
{% assign collection = link.object %}
顺便说一下,您不需要这样做来访问您的集合属性: https://help.shopify.com/themes/liquid/objects/link#link-object
这样的事情应该有效(未经测试):
<ul>
{% for link in linklists.all-collections.links %}
<!-- First check if your link is collection -->
{% if link.type == 'collection_link' %}
<li class="sidebar-menu-item {{ link.object.handle }}">
<a href="{{ link.url }}" title="{{ 'collections.general.link_title' | t: title: collection_title }}">{{ link.object.title }}</a>
<ul>
{% for tag in link.object.all_tags %}
{% unless tag == 'exclude' %}
<li>
<a href="{{ shop.url }}/collections/{{ link.object.handle }}/{{ tag | handleize }}">{{ tag }}</a>
</li>
{% else %}
<!-- If condition not met continue to next iteration -->
{% continue %}
{% endunless %}
{% endfor %}
</ul>
</li>
{% else %}
<!-- If not collection link, continue to next iteration in the loop -->
{% continue %}
{% endif %}
{% endfor %}
</ul>