2016-05-17 51 views
2

我正在建立一个静态网站使用。我正在从数据文件中正确生成一个简单的两级导航。我的问题是我被困在试图做两件事情:Jekyll液体子导航没有正确选择

  1. 将“选定”类应用到当前页面链接项目。
  2. 当存在子链接菜单时,将“打开”类应用于父列表项。

下面是我用我的_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> 

这同样正确地建立我的导航,但它不不适用选择课程或公开课程。

这里是我想什么它看起来像在最后:

enter image description here

我在做什么错?

+0

不确定这对于输出而言很重要,但是您的值有不一致的引用。另外,当你删除'{%assign current = null%}'语句时会发生什么? –

+0

@JoelGlovier当我移除“{%assign current = null%}”时没有任何反应。 – Hynes

回答

2

终于得到了这个工作。我通过将一个项目添加到我的页面的前端,名为permalink来解决它,我在其中指定了所需的页面固定链接。

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

我用这个永久链接检查逆水page.url添加<li>元素所需_selected类。

我对我的示例数据文件做了一个修改,在父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包括,这里就是我如何创建我的主菜单,使子菜单,如果存在的话,应该被显示,并正确选择活动链接:

{% 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之前,这对我来说总是失败。

这可能不是最漂亮的,但我终于得到了一个菜单生成(半)动态和正确选择活动链接。