Skip to main content

Page / Entities embed

Since v3.7.0 you can emebed a page or entity (i.e. a Page with a pageType with isEntity true) inside of another page, so that it is a single source of truth: anytime the embedded page is changed, the change is reflected in all the pages embedding it.

This can be done creating a special "embed brick". By default (unless you disable it via the enableDefaultEmbedBrick configuration), you already have a pre-made "embed brick", but you can create your own.

An embed brick must have a sideEditProp with name types.EmbedProp of type types.SideEditPropType.Relationship. You can choose to limit the page the editor can select to just one pageType, usign the references property of the relationshipOptions.

Example usage

const embedPageBrick: types.Brick = () => null
embedPageBrick.schema = {
name: 'product-embed',
label: 'Embed Product',
category: 'Embed',
sideEditProps: [
{
name: types.EmbedProp, // This triggers Embedding
label: 'Embed a product',
type: types.SideEditPropType.Relationship,
relationshipOptions: {
references: 'product', // You can choose to limit choice to just one pageType
multiple: false, // Multiple not supported for embeds
},
helperText: 'Choose a product, save to view it.',
},
],
}