消灭类似于wp_reset_query()

时间:2018-04-11 05:35:54

标签: shopify liquid

我有一个包含收藏列表的菜单(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>

1 个答案:

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