Setting Page Title and Description in Sanity using element previews
You'd need a way to pull a description from your item, which could be based on its content (first few lines if text, or a field in the item if you want to write this separately in the editor.
This documentation should explain, and good fortune:
https://www.sanity.io/docs/previews-list-views (edited)
import {defineField, defineType} from 'sanity'export default defineType({ name: 'post',
title: 'Post',
type: 'document',
fields: [
defineField({ name: 'title',
title: 'Title',
type: 'string',
}),
defineField({ name: 'slug',
title: 'Slug',
type: 'slug',
options: { source: 'title',
maxLength: 96,
},
}),
defineField({ name: 'author',
title: 'Author',
type: 'reference',
to: {type: 'author'}, }),
defineField({ name: 'mainImage',
title: 'Main image',
type: 'image',
options: { hotspot: true,
},
}),
defineField({ name: 'categories',
title: 'Categories',
type: 'array',
of: [{type: 'reference', to: {type: 'category'}}],}),
defineField({ name: 'publishedAt',
title: 'Published at',
type: 'datetime',
}),
defineField({ name: 'body',
title: 'Body',
type: 'blockContent',
}),
],
preview: { select: { title: 'title',
author: 'author.name',
media: 'mainImage',
},
prepare(selection) { const {author} = selection `return {...selection, subtitle: author && by ${author}}` },
},
})
Was this answer helpful?
Sanity β Build the way you think, not the way your CMS thinks
Sanity is the developer-first content operating system that gives you complete control. Schema-as-code, GROQ queries, and real-time APIs mean no more workarounds or waiting for deployments. Free to start, scale as you grow.