Error loading the CMS configuration – fields names must be unique

We have several sites using Hugo+Netlify CMS and everything has worked fine, but suddenly we cannot login to the cms of a few websites. They all show a similar error:

Error loading the CMS configuration

Config Errors:

‘collections[2].fields’ fields names must be unique

Check your config.yml file.


We haven’t changed anything in the config.yml lately, neither did we make changes to the template files.

When I check the config.yml file, I don’t see any duplicate field names.

These are the first 3 collections in the config.yml file:

collections:

  • name: “kamers”
    label: “Kamers”
    description: >
    Hier kan u de verschillende kamers beheren
    folder: “cms/kamers”
    create: true
    editor:
    preview: false
    slug: “{{slug}}”
    filter: {field: “cms”, value: “true”}
    fields:
    • {label: “Layout”, name: “layout”, widget: “hidden”, default: “kamer”}
    • {label: “Cms”, name: “cms”, widget: “hidden”, default: “true”}
    • {label: “Menu”, name: “menu”, widget: “hidden”, default: “roomsSub”}
    • {label: “Type”, name: “type”, widget: “hidden”, default: “room”}
    • {label: “tag”, name: “relation”, widget: “string”}
    • {label: “Ranking”, name: “weight”, widget: “number”}
    • {label: “Titel”, name: “title”, widget: “string”}
    • {label: “Titel FR”, name: “FR_title”, widget: “string”, required: false}
    • {label: “Titel EN”, name: “EN_title”, widget: “string”, required: false}
    • {label: “Titel DE”, name: “DE_title”, widget: “string”, required: false}
    • {label: “Banner subtitel”, name: “NL_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner subtitel FR”, name: “FR_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner subtitel EN”, name: “EN_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner subtitel DE”, name: “DE_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Homepage afbeelding”, name: “thumbnail”, widget: “image”}
    • {label: “Banner afbeelding”, name: “bannerImg”, widget: “image”}
    • label: Slides
      name: slides
      widget: list
      fields:
      • {label: “Afbeelding”, name: “slideImg”, widget: “image”}
      • {label: “Onderschrift”, name: “NL_slideTitle”, widget: “string”, required: false}
      • {label: “Onderschrift FR”, name: “FR_slideTitle”, widget: “string”, required: false}
      • {label: “Onderschrift EN”, name: “EN_slideTitle”, widget: “string”, required: false}
      • {label: “Onderschrift DE”, name: “DE_slideTitle”, widget: “string”, required: false}
    • {label: Boek knop tekst, name: NL_bookbtntext, widget: string, default: boek nu}
    • {label: Boek knop tekst FR, name: FR_bookbtntext, widget: string, default: réservez maintenant}
    • {label: Boek knop tekst EN, name: EN_bookbtntext, widget: string, default: book now}
    • {label: Boek knop tekst DE, name: DE_bookbtntext, widget: string, default: jetzt buchen}
    • {label: Boek url, name: NL_bookurl, widget: string, default: “xxx”}
    • {label: Boek url FR, name: FR_bookurl, widget: string, default: “xxx”}
    • {label: Boek url EN, name: EN_bookurl, widget: string, default: “xxx”}
    • {label: Boek url DE, name: DE_bookurl, widget: string, default: “xxx”}
    • {label: “Overzicht intro”, name: “NL_overviewIntro”, widget: “string”}
    • {label: “Overzicht intro FR”, name: “FR_overviewIntro”, widget: “string”, required: false}
    • {label: “Overzicht intro EN”, name: “EN_overviewIntro”, widget: “string”, required: false}
    • {label: “Overzicht intro DE”, name: “DE_overviewIntro”, widget: “string”, required: false}
    • label: Faciliteiten
      name: facilities
      widget: list
      fields:
      • label: “Icon”
        name: “icon”
        widget: “select”
        options:
        • { label: “Bed”, value: “icon-bed” }
        • { label: “Badkamer”, value: “icon-towel” }
        • { label: “Bel”, value: “icon-room-service” }
        • { label: “Grootte”, value: “icon-square-meter” }
        • { label: “Tech”, value: “icon-flatscreen” }
      • {label: “Titel”, name: “NL_facilityTitle”, widget: “string”}
      • {label: “Titel FR”, name: “FR_facilityTitle”, widget: “string”}
      • {label: “Titel EN”, name: “EN_facilityTitle”, widget: “string”}
      • {label: “Titel DE”, name: “DE_facilityTitle”, widget: “string”}
      • {label: “Tekst”, name: “NL_facilityText”, widget: “markdown”}
      • {label: “Tekst FR”, name: “FR_facilityText”, widget: “markdown”}
      • {label: “Tekst EN”, name: “EN_facilityText”, widget: “markdown”}
      • {label: “Tekst DE”, name: “DE_facilityText”, widget: “markdown”}
    • {label: “Faciliteiten voetnoot”, name: “NL_facilitiesNote”, widget: “string”, required: false}
    • {label: “Faciliteiten voetnoot FR”, name: “FR_facilitiesNote”, widget: “string”, required: false}
    • {label: “Faciliteiten voetnoot EN”, name: “EN_facilitiesNote”, widget: “string”, required: false}
    • {label: “Faciliteiten voetnoot DE”, name: “DE_facilitiesNote”, widget: “string”, required: false}

END KAMERS

OMGEVING

  • name: “omgeving”
    label: “Omgeving items”
    description: >
    Hier kan u de verschillende omgeving items beheren
    folder: “cms/omgeving”
    create: true
    editor:
    preview: false
    slug: “{{slug}}”
    filter: {field: “cms”, value: “true”}
    fields:
    • {label: “Layout”, name: “layout”, widget: “hidden”, default: “omgevingitem”}
    • {label: “Cms”, name: “cms”, widget: “hidden”, default: “true”}
    • {label: “Menu”, name: “menu”, widget: “hidden”, default: “omgevingSub”}
    • {label: “Ranking”, name: “weight”, widget: “number”}
    • {label: “Thumbnail”, name: “thumbnail”, widget: “image”}
    • label: “Type”
      name: “type”
      widget: “select”
      default: “wandelen”
      options:
      • { label: “Wandelen”, value: “wandelen” }
      • { label: “Fiets”, value: “fiets” }
      • { label: “Wagen”, value: “wagen” }
    • {label: “Titel”, name: “title”, widget: “string”}
    • {label: “Titel FR”, name: “FR_title”, widget: “string”, required: false}
    • {label: “Titel EN”, name: “EN_title”, widget: “string”, required: false}
    • {label: “Titel DE”, name: “DE_title”, widget: “string”, required: false}
    • {label: “Banner subtitel”, name: “NL_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner subtitel FR”, name: “FR_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner subtitel EN”, name: “EN_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner subtitel DE”, name: “DE_bannerSubtitle”, widget: “string”, required: false}
    • {label: “Banner afbeelding”, name: “bannerImg”, widget: “image”}
    • label: Slides
      name: slides
      widget: list
      fields:
      • {label: “Afbeelding”, name: “slideImg”, widget: “image”}
    • {label: “Overzicht intro”, name: “NL_overviewIntro”, widget: “string”}
    • {label: “Overzicht intro FR”, name: “FR_overviewIntro”, widget: “string”, required: false}
    • {label: “Overzicht intro EN”, name: “EN_overviewIntro”, widget: “string”, required: false}
    • {label: “Overzicht intro DE”, name: “DE_overviewIntro”, widget: “string”, required: false}
    • {label: “Hoofdinhoud”, name: “NL_body”, widget: “markdown”}
    • {label: “Hoofdinhoud FR”, name: “FR_body”, widget: “markdown”, required: false}
    • {label: “Hoofdinhoud EN”, name: “EN_body”, widget: “markdown”, required: false}
    • {label: “Hoofdinhoud DE”, name: “DE_body”, widget: “markdown”, required: false}

END OMGEVING

ARRANGEMENTEN

  • name: arrangementen
    label: Arrangementen
    description: >
    Hier kan u de verschillende arrangementen beheren
    folder: “cms/arrangementen”
    create: true
    editor:
    preview: false
    slug: “{{slug}}”
    filter: {field: “cms”, value: “true”}
    fields:
    • {label: “Layout”, name: “layout”, widget: “hidden”, default: “arrangement”}
    • {label: “Cms”, name: “cms”, widget: “hidden”, default: “true”}
    • {label: “Menu”, name: “menu”, widget: “hidden”, default: “arrangementenSub”}
    • {label: “Ranking”, name: “weight”, widget: “number”}
    • {label: “Verborgen”, name: “draft”, widget: “boolean”, default: false}
    • {label: “Verborgen FR”, name: “FR_draft”, widget: “boolean”, default: false}
    • {label: “Verborgen EN”, name: “EN_draft”, widget: “boolean”, default: false}
    • {label: “Verborgen DE”, name: “DE_draft”, widget: “boolean”, default: false}
    • {label: “Thumbnail”, name: “thumbnail”, widget: “image”}
    • {label: “Banner afbeelding”, name: “bannerImg”, widget: “image”}
    • {label: “Titel”, name: “title”, widget: “string”}
    • {label: “Titel FR”, name: “FR_title”, widget: “string”, required: false}
    • {label: “Titel EN”, name: “EN_title”, widget: “string”, required: false}
    • {label: “Titel DE”, name: “DE_title”, widget: “string”, required: false}
    • {label: Subtitel, name: NL_subtitle, widget: string}
    • {label: Subtitel FR, name: FR_subtitle, widget: string, required: false}
    • {label: Subtitel EN, name: EN_subtitle, widget: string, required: false}
    • {label: Subtitel DE, name: DE_subtitle, widget: string, required: false}
    • {label: “Intro”, name: “intro”, widget: “string”, required: false}
    • {label: “Intro FR”, name: “FR_intro”, widget: “string”, required: false}
    • {label: “Intro EN”, name: “EN_intro”, widget: “string”, required: false}
    • {label: “Intro DE”, name: “DE_intro”, widget: “string”, required: false}
    • label: Slides
      name: slides
      widget: list
      fields:
      • {label: “Afbeelding”, name: “slideImg”, widget: “image”}
    • {label: Prijs bovenschrift, name: NL_pricetop, widget: string }
    • {label: Prijs bovenschrift FR, name: FR_pricetop, widget: string, required: false }
    • {label: Prijs bovenschrift EN, name: EN_pricetop, widget: string, required: false }
    • {label: Prijs bovenschrift DE, name: DE_pricetop, widget: string, required: false }
    • {label: Prijs, name: price, widget: string }
    • {label: Prijs onderschrift, name: NL_pricesub, widget: string }
    • {label: Prijs onderschrift FR, name: FR_pricesub, widget: string, required: false }
    • {label: Prijs onderschrift EN, name: EN_pricesub, widget: string, required: false }
    • {label: Prijs onderschrift DE, name: DE_pricesub, widget: string, required: false }
    • {label: Boek knop tekst, name: NL_bookbtntext, widget: string, default: boek nu}
    • {label: Boek knop tekst FR, name: FR_bookbtntext, widget: string, default: réservez maintenant, required: false}
    • {label: Boek knop tekst EN, name: EN_bookbtntext, widget: string, default: book now, required: false}
    • {label: Boek knop tekst DE, name: DE_bookbtntext, widget: string, default: jetzt buchen, required: false}
    • {label: Boek knop tekst, name: NL_bookbtntext, widget: string, default: Meer info}
    • {label: Boek knop tekst FR, name: FR_bookbtntext, widget: string, default: Plus d’info, required: false}
    • {label: Boek knop tekst EN, name: EN_bookbtntext, widget: string, default: More info, required: false}
    • {label: Boek knop tekst DE, name: DE_bookbtntext, widget: string, default: Mehr Infos, required: false}
    • {label: Boek url, name: NL_bookurl, widget: string, default: “xxx”}
    • {label: Boek url FR, name: FR_bookurl, widget: string, default: “xxx”, required: false}
    • {label: Boek url EN, name: EN_bookurl, widget: string, default: “xxx”, required: false}
    • {label: Boek url DE, name: DE_bookurl, widget: string, default: “xxx”, required: false}
    • {label: Linker kolom inhoud, name: NL_leftcolcontent, widget: markdown, required: false }
    • {label: Linker kolom inhoud FR, name: FR_leftcolcontent, widget: markdown, required: false }
    • {label: Linker kolom inhoud EN, name: EN_leftcolcontent, widget: markdown, required: false }
    • {label: Linker kolom inhoud DE, name: DE_leftcolcontent, widget: markdown, required: false }
    • {label: Rechter kolom inhoud, name: NL_rightcolcontent, widget: markdown, required: false }
    • {label: Rechter kolom inhoud FR, name: FR_rightcolcontent, widget: markdown, required: false }
    • {label: Rechter kolom inhoud EN, name: EN_rightcolcontent, widget: markdown, required: false }
    • {label: Rechter kolom inhoud DE, name: DE_rightcolcontent, widget: markdown, required: false }
    • label: “Kamers in aanbieding”
      name: “relation”
      widget: “list”
      required: false
      fields:
      • label: “Kamer in aanbieding”
        name: “linkedroom”
        widget: “relation”
        collection: “kamers”
        searchFields: [“title”, “relation”]
        valueField: “relation”
        displayFields: [“title”, “relation”]

END ARRANGEMENTEN

NL_bookbtntext etc of the arrangementen collection are in there twice

Thank you very much, must have overlooked it!

1 Like

Geen probleem, succes!

1 Like