Feat: support hidden widget in files collections
chokeul8r opened this issue · 14 comments
Repo: chokeul8r/gncms
I am attempting to use NetlifyCMS in a Gatsby Landing Page project for the first time. My problem relates to the config.yml file and Template key field in particular. The template key is not showing up in my frontmatter and/or my graphgl query.
backend:
name: git-gateway
branch: master
media_folder: static/assets
public_folder: assets
collections:
- label: "Pages"
name: "pages"
files:
- label: "Home Page"
name: "home"
file: "content/home.md"
fields:
- {
label: "Template Key",
name: "templateKey",
widget: "hidden",
default: "home-page",
}
- { label: Background Image, name: backgroundimage, widget: image }
- { label: Title, name: title, widget: string }
- { label: Sub-Title, name: subtitle, widget: string }
- { label: Intro text, name: intro, widget: text }
- { label: Body text, name: body, widget: text }
- { label: Profile Image, name: profileimage, widget: image }
- label: "Thank You Page"
name: "thank-you"
file: "content/thank-you.md"
fields:
- {
label: "Template Key",
name: "templateKey",
widget: "hidden",
default: "thank-you-page",
}
- { label: Title, name: title, widget: string }
- { label: Intro text, name: intro, widget: text }
- { label: Image, name: image, widget: image }
Hi @chokeul8r do you mind sharing your repo?
Sorry for the late reply, hidden fields are meant to be used on folder collections when creating new items: https://www.netlifycms.org/docs/widgets/hidden/#hidden since they have a pre-defined uneditable value.
Changed the title to reflect the underlying issue.
I have the exact same issue.
- { label: layout, name: layout, widget: "hidden", default: "my-template-key", }
does not work. It does not show up in the .md file that is produced through the cms
The plugin gatsby-remark-source-name
helped me https://www.gatsbyjs.org/packages/gatsby-remark-source-name/
It adds the name of the source so you can query it in Graphql
Sorry for the late reply, hidden fields are meant to be used on folder collections when creating new items: https://www.netlifycms.org/docs/widgets/hidden/#hidden since they have a pre-defined uneditable value.
Hi. Is there a workaround for this? Or an alternative solution to save "invisible" data?
Is there a workaround for this? Or an alternative solution to save "invisible" data?
You could use the preSave
event to add any data you'd like:
https://www.netlifycms.org/docs/beta-features/#registering-to-cms-events
Thanks @erezrokah. This method is a bit beyond my capabilities for now. :) I added a select widget and a minor inconvenience to the user.
@erezrokah would it be possible to set multiple preSave
events?
@erezrokah would it be possible to set multiple
preSave
events?
It should be possible to do so:
https://github.com/netlify/netlify-cms/blob/b8dd038f4f693331d679bb8f39f07d9489024483/packages/netlify-cms-core/src/lib/registry.js#L223
It would be nice to have a widget that didn't display but could save a default value, regardless of whether it was in a folder or file collection, or a field under some other object widget. For my use case, I need to discriminate between different object widgets at run-time, so I'm adding a hidden "kind" field to the widget fields - but this doesn't work if I use these widgets in a file collection.
What was the solution for that one ? I have the same problem on my side, the Collections works well, but I get a templateKey : null for my Files.
In that exemple : https://github.com/robertcoopercode/gatsby-netlify-cms/blob/master/static/admin/config.yml
They use it, but seems doesn't work at all on my side :/
Perhaps a "value" widget that embeds a given value but renders as read-only on the admin interface? Kind of makes more sense to me than a hidden widget with a "default" value.
- { name: templateKey, value: "blogPost", widget: value }
I think it makes sense to support the hidden widget (as is) for file collections.
At the moment we don't even render hidden widgets:https://github.com/netlify/netlify-cms/blob/81ce05f3fb43594036d4753f8414e6cb51340376/packages/netlify-cms-core/src/components/Editor/EditorControlPane/EditorControlPane.js#L163
and default values are added during entries creation:
https://github.com/netlify/netlify-cms/blob/81ce05f3fb43594036d4753f8414e6cb51340376/packages/netlify-cms-core/src/actions/entries.ts#L797
If someone is up to extend the existing code to support this, the above links should be a good place to start