2016-05-17 47 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之前,這對我來說總是失敗。

這可能不是最漂亮的,但我終於得到了一個菜單生成(半)動態和正確選擇活動鏈接。