Netlify CMS - 如何通过 config.yml 集合存储对象数组

BML*_*L91 2 gatsby netlify netlify-cms

我对 Netlify 的 CMS 有点困惑——特别是在通过config.yml. 我将 Netlify CMS 与 Gatsby 静态站点一起使用,以允许最终用户更新网站上的一些动态数据。

我正在努力实现的目标:

我想要 CMS 上的数据类型,以允许用户创建新的旅游日期,包括最大入住人数和当前入住人数(即当前在所述旅游中预订了多少人)。

为了实现这一点,我目前已经这样做了config.yml(它config.yml位于static/admin我的 Gatsby 项目中,项目根目录中):

backend:
  name: git-gateway
  branch: master

publish_mode: editorial_workflow

media_folder: src/images/uploads
public_folder: /uploads

collections:
  - name: "tourInfo"
    label: "Tour Info"
    description: "Upcoming tours and their availability"
    files:
      - label: "tour"
        name: "Tour"
        file: "static/tours.json"
        fields:
          - {label: "Tour Date", name: "date", widget: "datetime"}
          - {label: "Total Places", name: "totalPlaces", widget: "number"}
          - {label: "Filled Places", name: "filledPlaces", widget: "number"}
Run Code Online (Sandbox Code Playgroud)

不过,这似乎不是我想要的,我似乎无法创建多个巡演日期实例,但只能创建一个。也许这是我对集合类型的一个基本误解,但我认为我可以定义tour为单个文件,然后用大量的 Tour 实例填充它。

有人可以指出我如何在不死机的情况下实现这组旅游数据点的正确方向吗?

Der*_*yen 5

您可以将该集合设为文件夹集合,也可以使用列表小部件

使用列表的示例,以及您的代码:

collections:
  - name: "tourInfo"
    label: "Tour Info"
    description: "Upcoming tours and their availability"
    files:
      - label: "tour"
        name: "Tour"
        file: "static/tours.json"
        fields:
          - label: "Tour List"
            name: "tourList"
            widget: "list"
            fields:
              - {label: "Tour Date", name: "date", widget: "datetime"}
              - {label: "Total Places", name: "totalPlaces", widget: "number"}
              - {label: "Filled Places", name: "filledPlaces", widget: "number"}
Run Code Online (Sandbox Code Playgroud)

因此,您的旅行日期、地点等可以放在列表的fields. 但是,对于大量数据,它看起来真的很不守规矩,您可能希望使用自定义宽幅对其进行分页,或使用文件夹集合。