.. include:: /Includes.rst.txt .. _ConfigureCE-Preview: ==================================================== Configure Custom Backend Preview for Content Element ==================================================== To allow editors a smoother experience, all custom content elements and plugins should be configured with a corresponding backend preview that shows an approximation of the element's appearance in the TYPO3 page module. The following sections describe how to achieve that. A :php:`PreviewRenderer` is used to facilitate (record) previews in TYPO3. The feature consists of two concepts: * :php:`PreviewRendererResolver` which is a global implementation to detect which :php:`PreviewRenderer` a given record needs. * :php:`PreviewRenderer` which is the class responsible for generating the preview and the wrapping. Writing a PreviewRenderer ------------------------- A custom :php:`PreviewRenderer` must implement the interface :php:`\TYPO3\CMS\Backend\Preview\PreviewRendererInterface` which contains the following API methods: .. code-block:: php /** * Dedicated method for rendering preview header HTML for * the page module only. Receives the the GridColumnItem * that contains the record for which a preview header * should be rendered and returned. * * @param GridColumnItem $item * @return string */ public function renderPageModulePreviewHeader(GridColumnItem $item): string; /** * Dedicated method for rendering preview body HTML for * the page module only. Receives the the GridColumnItem * that contains the record for which a preview should be * rendered and returned. * * @param GridColumnItem $item * @return string */ public function renderPageModulePreviewContent(GridColumnItem $item): string; /** * Render a footer for the record to display in page module below * the body of the item's preview. * * @param GridColumnItem $item * @return string */ public function renderPageModulePreviewFooter(GridColumnItem $item): string; /** * Dedicated method for wrapping a preview header and body * HTML. Receives $item, an instance of GridColumnItem holding * among other things the record, which can be used to determine * appropriate wrapping. * * @param string $previewHeader * @param string $previewContent * @param GridColumnItem $item * @return string */ public function wrapPageModulePreview(string $previewHeader, string $previewContent, GridColumnItem $item): string; .. note:: Further methods are expected to be added in the future to support generic preview rendering, e.g. usages outside :php:`PageLayoutView`. Implementing these methods allows you to control the exact composition of the preview. This means assuming your :php:`PreviewRenderer` returns :html:`
Body
` from the preview content rendering method and your wrapping method does :php:`return 'Body