Menu 使用liquid在嵌套的yaml列表中导航

Menu 使用liquid在嵌套的yaml列表中导航,menu,internationalization,yaml,jekyll,liquid,Menu,Internationalization,Yaml,Jekyll,Liquid,我看到了一些关于这个话题的问题,但没有一个能解决我的问题。我想有一个多语言的jekyll网站不使用任何插件。我有一个带有这个嵌套列表的yaml文件 menu: fr: home: name:"Acceuil" url:"/" team: name:"Équipe" url:"/equipe" en: home: name:"Home" url:"/home.html" team:

我看到了一些关于这个话题的问题,但没有一个能解决我的问题。我想有一个多语言的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封面上的page lang选项。最简单的例子是:

---
lang: en
---
<ul>
  {% for item in site.menu.[page.lang] %}
      <li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li>
  {% endfor %}
</ul>
---
朗:嗯
---
    {site.menu.[page.lang]%中的项为%s}
  • {%endfor%}
这应该以原始html打印

  • 团队
但是我的代码没有打印任何东西,我只有两个没有文本的项目符号。我看不出我做错了什么,你们能帮帮我吗

编辑:


好的,我唯一的问题是我没有在值指示器和值之间留出空间。现在问题解决了。谢谢

根据YAML规范,在菜单文件中的冒号和值之间添加空格:

YAML坚持将“:”映射值指示器与 按空格计算的值

同时删除
菜单:
键,并将菜单保存在名为
\u 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
键访问该数据,而无需在
菜单
页面之间使用

<ul>
    {% for item in site.data.menu[page.lang] %}
      <li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li>
  {% endfor %}
</ul>
    {%用于site.data.menu[page.lang]%中的项]
  • {%endfor%}
这将产生:

<ul>

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

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

</ul>

  • 我在一个多语言网站上使用了类似的方法,包括

根据YAML规范,在菜单文件中的冒号和值之间添加空格:

YAML坚持将“:”映射值指示器与 按空格计算的值

同时删除
菜单:
键,并将菜单保存在名为
\u 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
键访问该数据,而无需在
菜单
页面之间使用

<ul>
    {% for item in site.data.menu[page.lang] %}
      <li><a href="{{ item[1].url }}">{{ item[1].name }}</a></li>
  {% endfor %}
</ul>
    {%用于site.data.menu[page.lang]%中的项]
  • {%endfor%}
这将产生:

<ul>

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

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

</ul>

  • 我在一个多语言网站上使用了类似的方法,包括

谢谢,在值指示器和值之间留出空格可以解决问题!谢谢,在值指示器和值之间留出空格可以解决问题!