首页 > 解决方案 > 11ty 为每个数据文件渲染单个帖子

问题描述

我希望 11ty 为每个数据文件生成一个页面,而不是通过迭代数据文件中的数据来生成多个文件。这可能吗?

我的用例是我有多个yaml格式的职位描述:每个职位一个 yaml 页面。所以我想为每个数据文件生成一个页面。

我意识到我可以将所有的 yaml 数据作为前面的内容放在一个没有内容的页面中,但这感觉不对,因为我只有数据。

感谢您的任何指示。

标签: eleventy

解决方案


是的,您可以将集合分页结合使用,为每个作业创建一个输出文件。关键是使用 1 的分页大小,这样您的站点目录中只需要一个页面,它会为每个作业创建一个输出页面。这在Create Pages From Data中有记录。

链接文档文章中的示例使用一个数据文件 ( possums.json) 并在 110 为该文件生成的对象上进行分页。如果每个元素有一个数据文件(在您的情况下是作业),则可以通过将所有这些数据文件放在 _data 目录内的父目录中并对其进行迭代来实现相同的目的。这里的关键是了解十一如何处理全局数据目录中的嵌套目录,以及您可以使用对象的分页

因此,如果您的 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 }}/"

推荐阅读