首页 > 解决方案 > 直接访问shopify中的嵌套链接列表

问题描述

我在 shopify 中设置了这样的菜单导航:

- main_menu
    - top_level_1
    - top_level_2
        - top_level_2_sub_menu_1
        - top_level_2_sub_menu_2
        - top_level_2_sub_menu_3

我可以这样做来遍历所有菜单项:

    {% for link in linklists.main-menu.links %}
        <p>{{ link.handle }}</p>
        {% for nestedLink in link.links %}
            <p>{{ nestedLink.handle }}</p>
        {% endfor %}
    {% endfor %}

但是,我似乎无法通过属于 top_level_2 的子菜单进行迭代。我试过这个没有成功:

{% for link in linklists.main-menu.top_level_2.links %}
    <p>{{ link.handle }}</p>
{% endfor %}

并且还尝试了这个:

{% for link in linklists.top_level_2.links %}
    <p>{{ link.handle }}</p>
{% endfor %}

是否可以直接获取链接列表的句柄以遍历其子链接?还是我需要先通过搜索顶级项目来找到该链接?

标签: shopifyliquid

解决方案


linklists.main-menu.links返回一个对象项数组。

又名:

[
  {
    active: false
    child_active: false
    current: false
    child_current: false
    levels: 1
    links: [...]
    object: null
    title: "Some title"
    type: "http_link"
    url: "#:
  },
  {
    active: false
    child_active: false
    current: false
    child_current: false
    levels: 1
    links: [...]
    object: null
    title: "Some title"
    type: "http_link"
    url: "#:
  },
  {
    active: false
    child_active: false
    current: false
    child_current: false
    levels: 1
    links: [...]
    object: null
    title: "Some title"
    type: "http_link"
    url: "#:
  },
  etc...
]

所以你不能说linklists.main-menu.top_level_2,因为没有这样的对象。

你可以这样说linklists.main-menu.links[1].links和做:

{%- for link in linklists.main-menu.links[1].links -%}

{%- endfor -%}

但请注意,这只会循环第二个导航项中的项目,而忽略其余的项目。


推荐阅读