2015-02-06 72 views
0

我想使用jekyll頁面創建三級子菜單。Jekyll 3級子菜單

首先,我創建的文件夾那樣:

Menu item 1 
• menu item 1.1 
    • menu item 1.1.1 
• menu item 1.2 
    • menu item 1.2.1 
Menu item 2 
• menu item 2.1 
    • menu item 2.1.1 
    • menu item 2.1.2 
    • menu item 2.1. 
• menu item 2.2 

等。

現在,我的文件夾中使用這種鏈接:

menuLevel1/menuLevel2/file.md

我以爲我可以使用YAML變量這樣做,但它看起來像我無法在我的YAML中呈現所有變量的數組。我可以用做一個菜單:

{{ if page.menuLevel1 == "foo" and page.menulevel2 == "bar" }} 

但我堅持了整理項目,因爲我有5個1級選項,10個level2的選擇,我認爲它會花費很長的時間,使其工作。

有沒有辦法做到這一點沒有麻煩?

我不會從哪裏出發。

Tahnks很多傢伙。

Ju

回答

1

也許,使用數據文件是一個選項。只需在_data -folder定義文件menu.yml其中包含你的菜單結構:

- title: "Menu item 1" 
    href: "/menuLevel1/file.md" 
    sub: 
    - title: "menu item 1.1" 
     href: "/menuLevel1/menuLevel2/file.md" 
... 
- title: "Menu item 3" 
    href: "/menuLevel1/file2.md" 
在佈局

或包括您通過與for循環該文件走:

<!-- 1st level --> 
{% for nav in site.data.menu %} 

    {% if nav.sub != null %} 

    <li> 
     <ul> 
     <!-- 2nd level --> 
     {% for sub in nav.sub %} 
     <li> 
      <a href="{{ site.baseurl }}{{ sub.href }}"> 
      {{ sub.title }} 
      </a> 
     </li> 
     {% endfor %} 
     </ul> 
    </li> 

    {% else %} 

    <li> 
     <a href="{{ site.baseurl }}{{ nav.href }}">{{ nav.title }}</a> 
    </li> 

    {% endif %} 

{% endfor %} 

有幾個子菜單工作你將不得不添加另一個級別(即循環第三)。另外,通過使用include參數({% include param="level" %}和level = site.data.menu,nav.sub,...),可以在代碼中找到子菜單時使用不同的參數調用自身,從而避免代碼冗餘。

我使用類似的東西來生成導航菜單。簡單的工作,我可以隨時對菜單進行排序,並且我的所有配置文件都與我的_data-dir中的其他文件一起存儲(甚至可以將所有內容存儲在_config.yml中 - 我喜歡使用_data)。

希望我能幫到...