【问题标题】:How to use multiple data sources in EleventyEleventy如何使用多个数据源
【发布时间】:2022-11-01 17:48:42
【问题描述】:

我希望能够在 110 个模板页面(gallery.njk)中调用多个 json 文件。 我已经尝试将所有内容放入嵌套的 json 文件“collections.json”中,但它不起作用,为了便于管理,我宁愿将它分开。

我正在尝试这样的事情,但它不起作用:

---
pagination:
    data: "collection1", "collection2"
    size: 1
    alias: image
permalink: "/gallery/{{ image.title | slug }}/"
---

也试过:

  • 数据:collection1,collection2
  • 数据:[集合1,集合2]

这是有效的方法,但显然它只给了我 1 个集合:

---
pagination:
    data: collection1
    size: 1
    alias: image
permalink: "/gallery/{{ image.title | slug }}/"
---

【问题讨论】:

  • 所以要明确一点,您不是在问如何在 Eleventy 中使用多个数据文件,而是如何在一个特定的分页模板中使用它们。那正确吗?
  • 是的,我想那是正确的。我不想创建十几个模板,因为我有十几个集合,我想要一个模板来显示来自不同 json 文件的每个集合,如果这有意义吗?
  • 但是你想要一页还是N页?听起来你想要一个,据我所知,你只能提供一个数据项。您可以使用 addGlobalData 创建一个新的数据项,该数据项结合其他那些。请记住,除非您的数据非常相似,否则您的分页模板会因为它试图处理呈现不同的事物而变得混乱。
  • 如果您确定要合并 2 个或更多集合,理论上您可以将 collections.all 用于您的数据,并使用 before 过滤到两个(或更多)特定部分。或者,在您的 .eleventy.js 中,只需根据您的需要创建一个新的自定义集合。
  • 嗨@RaymondCamden,感谢您花时间尝试解决这个问题。如果你能看一下我的 git repo,那就太好了,这将更容易显示/解释问题。任何机会我都可以通过电子邮件将其发送给您..不确定将链接发送到回购的规则是什么,也不确定我是否想将其发布在这里。

标签: eleventy


【解决方案1】:

我遇到了同样的问题,我想创建多个类别的内容,意味着多个tags。我想为每个tag创建分页对象,这意味着我需要为每个tags创建多个liquid文件,每个文件都有一个frontmatter,每个liquid文件使​​用相同的layoutfrontmatter,只是有不同的pagination > data

看完11ty的生命周期,目前无法通过迭代一个预定义的标签数组来创建多个pagination对象。一个frontmatter 只能为一个tag 创建一个pagination

有两种解决方法:

  1. 创建一个 util node js 脚本来迭代所有标签以自动生成那些liquid 文件。
  2. 研究如何创建pagination,并提供增强功能以​​从多个tags 创建多个pagination 对象。
  3. 可能有更好的解决方案,抱歉我的糟糕体验。

【讨论】:

    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-03
    • 1970-01-01
    • 2014-04-16
    相关资源
    最近更新 更多