The ability to create content is one of the key responsibilities of any CMS. The content-creator plugin type is one way Tina lets you add this behaviour.

interface ContentCreatorPlugin<FormShape> {
  __type: 'content-creator'
  name: string
  fields: Field[]
  onSubmit(value: FormShape, cms: CMS): Promise<void> | void
}| Option | Description | 
|---|---|
__type | The name of the plugin. Always 'content-creator'. | 
name | The text to be displayed in the "Add Content" menu. | 
fields | An array of fields that populate a modal form. Field values can populate new file data. | 
onSubmit | A function that creates content. Called once the form is submitted. | 
const BlogPostCreatorPlugin = {
  __type: 'content-creator',
  fields: [
    {
      label: 'Title',
      name: 'title',
      component: 'text',
      validation(title) {
        if (!title) return "Required."
      }
    },
    {
      label: 'Date',
      name: 'date',
      component: 'date',
      description: 'The default will be today.',
    },
    {
      label: 'Author',
      name: 'author_name',
      component: 'text',
      description: 'Who wrote this, yo?',
    },
  ],
  onSubmit(values, cms) {
    // Call functions that create the new blog post. For example:
    cms.apis.someBackend.createPost(values)
  },
}After registering the plugin with the CMS it will be accessible.
cms.plugins.add(BlogPostCreatorPlugin)Last Edited: March 16, 2021