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

时间:2019-04-04 22:49:26

标签: gatsby netlify netlify-cms

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

我要实现的目标:

我希望CMS上的数据类型允许用户创建新的游览日期,同时最多容纳人数和当前居住人数(即,当前在该游览中预订的人数)。

要实现这一目标,我目前使用了config.yml(这个config.yml位于我的Gatsby项目的static/admin中,没有项目根目录):

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"}

这似乎并不是我要找的东西,我似乎无法创建许多巡回演出实例,但只能创建一个。在收集类型方面,这可能是我的一个基本误解,但我想我可以将tour定义为单个文件,然后用许多巡回实例填充它。

有人能指出我正确的方向,以实现这种巡回数据点阵列而不会死于文件吗?

1 个答案:

答案 0 :(得分:1)

您可以将该集合设为folder collection,也可以使用list widget

在代码中使用列表的示例:

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"}

因此,您的游览日期,地点等可以放在列表的fields下。但是,对于大量数据来说,这看起来确实很不守规矩,您可能想使用自定义宽度来进行分页或使用文件夹集合。