I’m trying to manually install netlify cms to a site. I get the following error:
'collections[3]' should have required property 'files'
'collections[3]' should have required property 'folder'
'collections[3]' should match exactly one schema in oneOf
'collections[4]' should have required property 'files'
'collections[4]' should have required property 'folder'
'collections[4]' should match exactly one schema in oneOf
However, I have “folder” in both collections. They look like this:
- name: people
label: Our Team
folder: /src/team/
create: true
extension: md
slug: '{{slug}}'
identifier_field: personname
fields:
- widget: string
name: personname
label: Name
required: true
What am I doing wrong? I read collection doc, and all seems normal.
File collections can be super confusing. Usually you break down your collections like this (or at least, it’s how I do it): Folder collections get their own collections. File collections come in groups, like pages, configuration etc. You almost got it right, you just gave every file its own collection, which becomes confusing pretty quickly. My advice is to bundle all the static pages into a pages collection:
collections:
- name: config
label: Site Configuration
files:
- name: config
label: Site Configuration
file: site-metadata.json
fields:
- widget: string
name: title
label: Title
required: true
- widget: string
name: description
label: Description
required: true
- widget: select
name: palette
label: Color Palette
required: true
hint: The color palette used for the website.
options:
- Blue
- Green
- Black & White
- name: people
label: Our Team
folder: /src/team/
create: true
extension: md
slug: '{{slug}}'
identifier_field: personname
fields:
- widget: string
name: personname
label: Name
required: true
- widget: string
name: email
label: Email Address
required: false
- widget: string
name: phone
label: Phone Number of the person
required: false
hint: "E.g.: 999.555.9999"
- widget: image
name: personimage
label: Image
required: false
- widget: markdown
name: personprofile
label: Person Profile
required: false
- widget: hidden
name: template
label: Template
required: true
default: page
filter:
field: template
value: page
- name: pages
label: Pages
files:
- name: about
label: About
file: /src/about/index.md
fields:
- widget: string
name: title
label: Title
required: true
- widget: string
name: subtitle
label: Subtitle
required: false
hint: The text shown below the page title
- widget: image
name: image
label: Image
required: false
hint: The image shown below the page title
- widget: hidden
name: template
label: Template
required: true
default: page
- widget: markdown
name: body
label: Content
required: false
hint: Page content
- name: testimonials
label: Testimonials
file: /src/testimonials/index.md
widget: list
fields:
- widget: string
name: quote
label: Quote
required: true
hint: Client's testimonial
- widget: string
name: author
label: Author
required: false
hint: Client's name
- name: contact
label: Contact Information
file: /src/contact/index.md
widget: object
fields:
- widget: string
name: location
label: Location name
required: false
- widget: string
name: address
label: Address
required: true
- widget: string
name: email
label: Email Address
required: false
- widget: string
name: phone
label: Phone
required: false
- widget: string
name: fax
label: Fax Number
required: false
Thanks Tom! It works now but I don’t know what was missing previously. Messy? Yes, but I felt like it should work. I was just copy-pasting from an open source project.
Anyways, now I see the login screen. How can I login without deploying to netlify? I prefer to experiment in local.
You can experiment locally with either the test-repo or a local git repository. If you just want to try out your config, I recommend the former. It ignores your data though, something to be aware of…