Jekyll Liquid 子导航未正确选择

Jekyll Liquid sub-navigation not properly selecting

我正在 using 上构建一个静态网站。我从数据文件中正确地生成了一个简单的两级导航。我的问题是我无法尝试做两件事:

  1. 将 "selected" class 应用于当前页面 link 项。
  2. 当存在子link 菜单时,将"open" class 应用于父列表项。

这是我在 _data/nav.yml 文件中使用的格式

- title: Top Level Nav Item
  url: level-1/
  sublinks:
    - title: Child Nav Item 1
    url: child-1/
    - title: Child Nav Item 2
    url: child-2/

以下是我构建导航的方式:

{% assign current_page = page.url | remove: 'index.html' %}
<ul class="-nav">
{% for nav in include.nav %}
    {% assign current = null %}
    {% if nav.url == current_page %}
        {% assign current = ' _selected' %}
    {% endif %}
    {% if nav.url contains current_page %}
        {% assign open = ' _open' %}
    {% endif %}
    <li class="-item{{ current }}{{ open }}">
        <a href="{{ site.url }}{{ nav.url }}">{{ nav.title }}</a>
        {% if nav.sublinks and current_page contains nav.url %}
            {% include navigation.html nav=nav.sublinks%}
        {% endif %}
    </li>
{% endfor %}
</ul>

这再次正确地构建了我的导航,但它既不应用选定的也不应用打开的 class。

这是我希望它最后看起来的样子:

我做错了什么?

终于成功了。我通过在名为 permalink 的页面前面添加一个项目来解决它,我在其中指定了所需的页面 permalink。

---
layout: default
title: Example
permalink: url/example/
---

我使用这个 permalink 来检查当前的 page.url 以在 <li> 元素上添加所需的 _selected class。

我对示例数据文件进行了一次修改,将父 url_part 添加到子 url 中。我不确定为什么,但我无法正确打印整个 URL。

- title: Top Level Nav Item
  url: level-1/
  sublinks:
    - title: Child Nav Item 1
    url: level-1/child-1/
    - title: Child Nav Item 2
    url: level-1/child-2/

最后是我的 navigation.html include,这是我创建主菜单的方式,呈现子菜单(如果它们存在并且应该显示),并正确 select 激活活动 link:

{% assign current_page = page.url | remove: 'index.html' %}
<ul class="-nav">
{% for nav in include.nav %}
    {% assign current = null %}
    {% if nav.url == page.permalink %}
        {% assign current = ' _selected' %}
    {% endif %}
    <li class="-item{{ current }}">
        <a href="/{{ nav.url }}">{{ nav.title }}</a>
        {% if nav.sublinks and current_page contains nav.url %}
            {% include navigation.html nav=nav.sublinks%}
        {% endif %}
    </li>
{% endfor %}
</ul>

这与我最初发布的片段之间的最大区别在于我暂时删除了 {{ open }} 内容。一次一个问题。另一件事是我正在检查 nav.url 是否等于 page.permalink。在我检查 page.url 之前,这对我来说总是失败。

它可能不是最漂亮的,但我终于得到了一个 菜单来生成(半)动态和正确 select 活动 link。