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 为每个数据文件渲染单个帖子的主要内容,如果未能解决你的问题,请参考以下文章

如何通过前端变量(Eleventy / 11ty)过滤处理过的文件?

来自 csv 文件的 JMeter 和数据集

如何在 11ty 中显示精选帖子

如何打印帖子 11ty 的通用大写字母?

如何一个接一个地渲染多个html文件?

React:如何加载和渲染外部 html 文件?