2015-02-06 2 views
0

지킬 페이지를 사용하여 3 단계 하위 메뉴를 만들고 싶습니다.지킬 수준 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 레벨 2 옵션이 있기 때문에, 내가 그것을 작동하게하는 데 시간이 오래 걸릴 것 같아요.

번거 로움없이이 작업을 수행 할 수있는 방법이 있습니까?

여기서는 어디로 가야합니까?

많은 사람들이 Tahnks.

답변

1

아마도 데이터 파일로 작업하는 것이 좋습니다. 단순히 메뉴 구조를 포함하는 _data - 폴더에 파일 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" 

또는 당신이-루프와 그 파일을 통해 걸어 같습니다

<!-- 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 %} 

여러 하위 메뉴로 작업 다른 레벨을 추가해야합니다 (예 : 3 차 루프). 또는 서브 메뉴가 발견 될 때마다 다른 매개 변수로 자신을 호출하는 매개 변수 ({% include param="level" %} 및 level = site.data.menu, nav.sub ...)와 함께 포함을 사용하면 코드에서 중복을 피할 수 있습니다.

나는 네비게이션 메뉴를 생성하는 것과 비슷한 것을 사용합니다. 간단히 작동, 내가 원하는 때마다 메뉴를 정렬 할 수 있고 내 _data-dir에있는 다른 파일들과 함께 모든 구성 파일을 가지고 있습니다 (_config.yml에있는 모든 것을 저장할 수도 있습니다 - 저는 _data로 작업하기를 좋아합니다).

희망을 도와주세요.