2017-10-28 360 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