11ty 为每个数据文件渲染单个帖子
Posted
技术标签:
【中文标题】11ty 为每个数据文件渲染单个帖子【英文标题】:11ty render single post per data file 【发布时间】:2020-11-22 18:57:45 【问题描述】:我希望 11ty 为每个数据文件生成一个页面,而不是通过迭代数据文件中的数据来生成多个文件。这可能吗?
我的用例是我有多个 yaml
格式的职位描述:每个职位一个 yaml 页面。所以我想为每个数据文件生成一个页面。
我意识到我可以将所有的 yaml 数据作为前面的内容放在一个没有内容的页面中,但这感觉不对,因为我只有数据。
感谢您的任何指点。
【问题讨论】:
【参考方案1】:是的,您可以将collections 与pagination 结合使用,为每个作业创建一个输出文件。关键是使用 1 的分页大小,这样您的站点目录中只需要一个页面,它会为每个作业创建一个输出页面。这记录在Create Pages From Data。
链接文档文章中的示例使用一个数据文件 (possums.json
) 并在 111 为该文件生成的对象上进行分页。如果每个元素都有一个数据文件(在您的情况下是作业),则可以通过将所有这些数据文件放在 _data 目录内的父目录中并对其进行迭代来实现相同的目的。这里的关键是了解十一如何处理nested directories in the global data directory,并且您可以use pagination with an object。
因此,如果您的 yaml 作业文件结构如下:
_data/jobs/job1.yaml
_data/jobs/job2.yaml
_data/jobs/job3.yaml
您应该能够像这样对它们进行分页(改编自文档中的示例,可能需要稍作调整以使其适用于您的内容):
pagination:
data: jobs
size: 1
alias: job
resolve: values
permalink: "jobs/ job.name | slug /"
【讨论】:
感谢@MoritzLost。所以我想要一个模板用于多个数据文件。我认为集合和分页是为一个数据文件使用一个模板。因此,如果我有数据文件:jd1、yaml、jd2.yaml、jd3.yaml 要使用分页,我相信每个 yaml 文件都需要一个模板。我只想使用一个模板文件。您能否提供一些代码示例来说明您认为它将如何工作?我一直在参考文档,但我看不到如何 @pat 我添加了一个示例。关键是将所有作业数据文件放在一个子目录中,然后使用子目录的名称进行分页。不确定该示例是否可以开箱即用(现在无法测试),但如果您阅读了我在上面链接的另外两个文档页面,您应该能够使其与一个模板文件一起使用。 嘿,第一次工作。真的很简单。非常感谢您详细解释。 vredeburg 主题也使用此技巧进行类别分页。您可以在那里查看工作示例。resolve: values
是我丢失的部分。谢谢!【参考方案2】:
感觉恰到好处 :) 将文件放入其中,然后在几秒钟内完成您的页面。如果您只需要将它们转换为页面,这是一种最快的方法。 Collections 会给你列表等等。
【讨论】:
以上是关于11ty 为每个数据文件渲染单个帖子的主要内容,如果未能解决你的问题,请参考以下文章