【问题标题】:Why does {{ site.eggs.label }} not return "eggs" for the jekyll collection "eggs"?为什么 {{ site.eggs.label }} 不为 jekyll 集合“eggs”返回“eggs”?
【发布时间】:2017-03-08 11:04:34
【问题描述】:

config.yml 定义colleio鸡蛋

collections:
  eggs:
    output: true

一个文件夹 _eggs 有一个带有front matter的文档

我可以这样访问集合标签:

{{ site.collections[0].label }}

返回 "eggs" 但不是这样

{{ site.eggs.label }}

它什么也不返回:

{{ site.eggs }}

https://jekyllrb.com/docs/collections/#liquid-attributes 上有关集合的文档对我来说没有多大意义:“集合也可以在 site.collections 下获得,其中包含您指定的元数据”。作者在 github 上的一个问题中说,collections 字段(悄悄地?)被删除了(https://github.com/jekyll/jekyll/issues/4392)。

我目前正在评估 Jekyll,这会让人怀疑它是否稳定、是否有最新的文档以及未来还有其他陷阱。

我是否误解了文档?为什么上述对集合元数据的访问不起作用。

【问题讨论】:

  • 您需要简单地获取您收藏的标签吗?链接问题中有一个解决方案,但我不确定这是否是正确的答案。另外,{{ site.eggs }} 对你来说是空的吗?那个应该归还所有鸡蛋。
  • 它应该返回所有鸡蛋,但输出为空。阅读文档和我已经放弃 jekyll 的问题。

标签: jekyll


【解决方案1】:

每个集合的元数据都可以通过site.collections 获得,这意味着它将返回一个集合及其元数据的数组。

如果直接访问集合,例如site.eggs,则不会有可用的元数据,而是所有集合文件的数组,即_eggs 文件夹中的所有文件。

示例

要显示site.eggs 的内容,您可以遍历每个文件,考虑在/_eggs/item.yml 中包含以下文件

---
title: "Jekyll is awesome"
---

然后就可以在/index.yml中显示如:

{% for egg in site.eggs %}
{{egg.title}}
{% endfor %}

输出:

Jekyll is awesome

【讨论】:

  • 看起来和我预期的一样,但是在我全新安装的机器上,这根本没有字。上面的循环没有渲染任何东西。但是您在开头写的内容与我的发现相符: site.collections 是一个数组,因此不可能按名称访问元数据,只能通过索引或循环和查找。谢谢
  • 我也在全新安装上测试过,你应该也能用,请问你有什么错误或鸡蛋收集文件的内容?
  • 几乎所有东西都是空的,呈现为“”。目前搬到雨果,所以不能调查atm,但jekyll现在或以后仍在我的名单上。感谢您的时间和帮助。
猜你喜欢
  • 1970-01-01
  • 2011-03-05
  • 2011-08-18
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 2017-03-26
  • 2010-09-21
  • 2013-01-31
相关资源
最近更新 更多