Editable Document Teasers based on Includes and an extended version of Document Teasers provide a simple way to setup teasers and the possiblity to define the UI with a paramsSchema
.
If you set editableContent: true
as return value, a user can overwrite the single directive values within the local document.
An example of an includes return value:
{
// if editableContent is true, the user can locally edit the content
editableContent: true,
content: [
{
id: `teaser-${documentVersion.systemdata.documentId}`,
// a Component with the name `teaser` needs to be configured in the design
component: 'teaser',
// the content contains the values for the directives configured on the `teaser` component
content: {
image: documentVersion.metadata.teaserImage,
title: documentVersion.metadata.title,
lead: 'Lead',
byline: 'Byline',
link: {href: 'https://example.com'}
}
}
]
}
Here is an example includes configuration to consider for the editable teaser usecase:
{
name: 'editable-teaser',
paramsSchema: [
// this will render a UI in the document editing sidebar to let the User select an article
{
handle: 'article',
type: 'li-document-reference',
config: {
documentType: 'article',
},
ui: {
label: 'Teaser'
}
}
],
rendering: {
type: 'function',
render (params, context) {
return renderTeaser({params, context, publicationApi, documentApi})
}
}
}
This is how your Teaser Component looks like in this case:
{
name: 'teaser-include',
label: 'Teaser',
iconUrl: 'URL to an SVG icon',
directives: [
{
name: 'teaser',
type: 'include',
service: 'editable-teaser',
paramsSchemaExtension: [
{
name: 'article',
config: {
// configure base filters for the article search modal
contentType: ['regular'], // only document of contentType 'regular'
published: true // only published documents
}
}
]
}
],
html: `
<div doc-include="teaser">
<div>Link an Article</div>
</div>
`
}
Caveats
editableContent
has no effect when more than one component is returned.- The includes won’t be resolved when you load the publication via Public API
api/v1/documents/:documentId/latestPublication
. - When requesting a web rendition of a publication, the components returned from the include resolver won’t be part of rendered html for now.