Exports the fields from the SEO plugin so that they can be used anywhere
inside a collection, new exports:
```ts
import { MetaDescriptionField, MetaImageField, MetaTitleField, OverviewField, PreviewField } from '@payloadcms/plugin-seo/fields'
// Used as fields
MetaImageField({
relationTo: 'media',
hasGenerateFn: true,
})
MetaDescriptionField({
hasGenerateFn: true,
})
MetaTitleField({
hasGenerateFn: true,
})
PreviewField({
hasGenerateFn: true,
titlePath: 'meta.title',
descriptionPath: 'meta.description',
})
OverviewField({
titlePath: 'meta.title',
descriptionPath: 'meta.description',
imagePath: 'meta.image',
})
```
99 lines
2.4 KiB
TypeScript
99 lines
2.4 KiB
TypeScript
import type { CollectionConfig } from 'payload'
|
|
|
|
import {
|
|
MetaDescriptionField,
|
|
MetaImageField,
|
|
MetaTitleField,
|
|
OverviewField,
|
|
PreviewField,
|
|
} from '@payloadcms/plugin-seo/fields'
|
|
|
|
import { pagesWithImportedFieldsSlug } from '../shared.js'
|
|
|
|
export const PagesWithImportedFields: CollectionConfig = {
|
|
slug: pagesWithImportedFieldsSlug,
|
|
labels: {
|
|
singular: 'Page with imported fields',
|
|
plural: 'Pages with imported fields',
|
|
},
|
|
admin: {
|
|
useAsTitle: 'title',
|
|
},
|
|
versions: {
|
|
drafts: true,
|
|
},
|
|
fields: [
|
|
{
|
|
name: 'title',
|
|
label: 'Title',
|
|
type: 'text',
|
|
required: true,
|
|
},
|
|
OverviewField({
|
|
titlePath: 'metaAndSEO.title',
|
|
descriptionPath: 'metaAndSEO.innerMeta.description',
|
|
imagePath: 'metaAndSEO.innerMedia.image',
|
|
}),
|
|
{
|
|
type: 'tabs',
|
|
tabs: [
|
|
{
|
|
label: 'General',
|
|
fields: [
|
|
{
|
|
name: 'excerpt',
|
|
label: 'Excerpt',
|
|
type: 'text',
|
|
},
|
|
{
|
|
name: 'slug',
|
|
type: 'text',
|
|
required: true,
|
|
// NOTE: in order for position: 'sidebar' to work here,
|
|
// the first field of this config must be of type `tabs`,
|
|
// and this field must be a sibling of it
|
|
// See `./Posts` or the `../../README.md` for more info
|
|
admin: {
|
|
position: 'sidebar',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
{
|
|
label: 'Meta',
|
|
name: 'metaAndSEO',
|
|
fields: [
|
|
MetaTitleField({
|
|
hasGenerateFn: true,
|
|
}),
|
|
PreviewField({
|
|
hasGenerateFn: true,
|
|
titlePath: 'metaAndSEO.title',
|
|
descriptionPath: 'metaAndSEO.innerMeta.description',
|
|
}),
|
|
{
|
|
type: 'group',
|
|
name: 'innerMeta',
|
|
fields: [
|
|
MetaDescriptionField({
|
|
hasGenerateFn: true,
|
|
}),
|
|
],
|
|
},
|
|
{
|
|
type: 'group',
|
|
name: 'innerMedia',
|
|
fields: [
|
|
MetaImageField({
|
|
relationTo: 'media',
|
|
hasGenerateFn: true,
|
|
}),
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
}
|