2017-10-28 399 views
1

我見過關於這個主題的幾個問題,但沒有人能解決我的問題。我想有一個多語言的jekyll網站,而不使用任何插件。我有這個嵌套列表導航通過液體嵌套yaml列表

menu: 
    fr: 
    home: 
     name:"Acceuil" 
     url:"/" 
    team: 
     name:"Équipe" 
     url:"/equipe" 
    en: 
    home: 
     name:"Home" 
     url:"/home.html" 
    team: 
     name:"Team" 
     url:"/team" 

我想根據打印頁面上在YAML前面的問題郎選擇不同的菜單YAML文件。一個最小爲例是:

--- 
lang: en 
--- 
<ul> 
    {% for item in site.menu.[page.lang] %} 
     <li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li> 
    {% endfor %} 
</ul> 

,這應該在原始的HTML打印

  • 首頁

但不是我的代碼打印什麼,我只是有兩顆子彈帶沒有文字。我看不出我做錯了什麼,你們能幫助我嗎?

編輯:

好吧,我唯一的問題只是我沒有把價值指標和值之間的空間。現在問題解決了。謝謝 !

回答

0

添加冒號和值之間的空白在菜單文件,根據YAML規範:

YAML堅持在「:」映射值指示符從 值由空格分開。

也刪除menu:密鑰,並將菜單保存在名爲_data/menu.yml的文件中。

fr: 
    home: 
    name: "Acceuil" 
    url: "/" 
    team: 
    name: "Équipe" 
    url: "/equipe" 
en: 
    home: 
    name: "Home" 
    url: "/home.html" 
    team: 
    name: "Team" 
    url: "/team" 

然後就可以用site.data.menu直接訪問到lang密鑰訪問該數據而無需.menupage.lang之間:

<ul> 
    {% for item in site.data.menu[page.lang] %} 
     <li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li> 
    {% endfor %} 
</ul> 

這產生:

<ul> 

     <li><a href="/home.html">Home</a></li> 

     <li><a href="/team">Team</a></li> 

</ul> 

+0

謝謝,在值指示符和值之間放置空格解決了問題! – Samsa