This is a Sanity Studio v3 plugin.
npm install @nuagedelait/sanity-pagebuilder
Page builder based on page / sections / blocks
You can add redirections in a array in the settings section
Menu can contains menu items
Menu items can contains menu (as submenu)
Menu items can contains sections
Sections can cotnains blocks
Blocks can be created within the page and are independants documents
Add it as a plugin in sanity.config.ts
(or .js):
import {defineConfig} from 'sanity'
import { pagebuilderTool } from '@nuagedelait/sanity-pagebuilder'
export default defineConfig({
//...
plugins: [pagebuilderTool()],
})
You can extends schemas of the plugins without the pain of handling desk structure
export default defineConfig({
//...
plugins: [pagebuilderTool(
{
addBlocksSchemas: [ 'array of blocks schemas in sections' ]
addContentSchemas: [ 'array of content schemas like custom `posts` or `articles`' ]
addManagmentSchemas: [ 'array of diverses schemas (used if contents)' ]
api: 'sanity api version, default : `v2023-08-01`'
}
)],
})
You can use localization by adding a language array to the plugin config It will add :
necessary fields based on the document type :
export default defineConfig({
//...
plugins: [pagebuilderTool(
{
addBlocksSchemas: [ 'array of blocks schemas in sections' ]
addContentSchemas: [ 'array of content schemas like custom `posts` or `articles`' ]
addManagmentSchemas: [ 'array of diverses schemas (used if contents)' ]
api: 'sanity api version, default : `v2023-08-01`',
languages: ['en','fr']
}
)],
})
If you have custom schema, you can add the localization fields using the i18n function :
import { i18n } from '@nuagedelait/sanity-pagebuilder'
const schemaWithLocale = i18n(
schema, // your custom schema
languages, // your languages list, ex : ['en', 'fr']
true // if needed, add translations field
),
MIT © nuagedelait
This plugin uses @sanity/plugin-kit with default configuration for build & watch scripts.
See Testing a plugin in Sanity Studio on how to run this plugin with hotreload in the studio.