【问题标题】:Create Jekyll link from YAML array从 YAML 数组创建 Jekyll 链接
【发布时间】:2018-02-01 05:08:35
【问题描述】:

我在名为 navigation.yml 的文件中有一个 YAML 数组,如下所示:

docs:

- title: Home
  url: index.md
  id: index

- title: Support
  url: support.html
  id: support

- title: About
  url: about.md
  id: about

我正在创建如下导航栏:

<section id="navigation" class="clearfix">
  {% for item in site.data.navigation.docs %}
  <a href="{{ site.baseurl }}{% link index.md %}" id="{{ item.id }}" class="navigationButton"><span>{{ item.title }}</span></a>
  {% endfor %}
</section>

我应该用什么代替 index.md 来从 YAML 文件中获取我想要的 item.url。

我对 GitHub Pages、YAML 和 Jekyll 完全陌生。

【问题讨论】:

  • 如果我理解正确的话,应该用{{ item.url }} 替换{% link index.md %}
  • 可行,但它会将您带到一个没有 Jekyll 主题的页面,我没有提到我正在使用它。

标签: yaml jekyll github-pages


【解决方案1】:

目前,link 标签似乎不支持变量。
a pull request 试图改变这一点,但它还没有被合并到 Jekyll 的主要 repo 中。

所以如果你现在想这样做,你需要使用一些技巧。

flyx 在his comment 中建议的解决方案(replace {% link index.md %} by {{ item.url }}) 基本可行,但显示的是数据文件中写入的原始文件名。

⇒ 如果在渲染站点时index.md 自动重命名为index.html,您的链接将不再有效。
(或者如果support.html 变为support/index.html

这可能就是您想改用link 标记的原因。

如果不使用link 标签,您需要循环您的数据文件,遍历所有页面以找到相应的页面,并在您的链接中显示该页面的实际网址

<section id="navigation" class="clearfix">
  {% for item in site.data.navigation.docs %}
    {% for page in site.pages %}
       {% if page.path == item.url %}
        <a href="{{ site.baseurl }}{{ page.url }}" id="{{ item.id }}" class="navigationButton"><span>{{ item.title }}</span></a>
       {% endif %}
    {% endfor %}
  {% endfor %}
</section>

这甚至考虑到诸如明确设置永久链接(页面前面的permalink: /whatever/之类的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多