This API provides an easy and reliable way to register content blocks (composer packages). Follow this README for a quick getting started overview. Find the full Documentation inside this repository.
alpha
- the main concepts are laid out but nothing is polished yet. We welcome your feedback.
You can reach us in the TYPO3 Slack #cig-structuredcontent-contentblockcreation
❤️.
This will set up a TYPO3 v10 with ddev and install the API extension.
- ddev
- Clone this repository
- Run
ddev launch /typo3
The TYPO3 backend user is "admin", password "adminadmin".
It includes example Content Blocks in a local composer repository that are installed by default.
- TYPO3 v10+
- In TYPO3 v10, backend previews require the Fluid based Page module to be enabled.
The API required to use content blocks consists of 2 composer packages: an API extension and a composer plugin.
composer req typo3-contentblocks/contentblocks-reg-api
- Activate the extension
contentblocks_reg_api
- Add new database fields: (Backend)
Maintenance
›Analyze Database Structure
This is an example repo with a content block
composer req typo3-contentblocks/call-to-action:dev-master
For using custom content blocks in your project we recommend a local "path" composer repository.
There is a wizard module that kickstarts Content Blocks for you.
You can also add a Content Block directory manually to typo3conf/contentBlocks
.
The detection of content blocks depends on the composer package type.
The custom composer installer then retrieves all packages, which are of type typo3-cms-contentblock
.
Following aspects are mandatory for a content block to be validated successfully:
- An icon for the content block named "ContentBlockIcon" hast to be present in the package root and of type SVG/PNG/GIF
- The file
EditorInterface.yaml
has to be present in the package root and valid - The backend language file
Default.xml
orEditorInterface.xlf
has to be present in thesrc/Language
folder of the package - The file
EditorPreview.html
has to be present in thesrc
folder of the package
Content blocks are stored in or symlinked to typo3conf/contentBlocks/
.
TCA is virtually generated from the class implementing a content block field type.
Based on the fields defined in the EditorInterface.yaml
a FlexForm for the editing interface of the content block
is generated and stored in tt_content.content_block
.
- Register icon
- Add TCA entry in CTypes list including the icon
- Add the content block to the NewContentElementWizard
- Add TypoScript to render the content plugin
- Add PageTS for the content block
For some reason it might be necessary to inherit content blocks from your own definition. E. g. if you want to inherit content blocks from lib.contentElement. In that case you can extend the default TypoScript as you need. This is the default Code:
lib.contentBlock = FLUIDTEMPLATE lib.contentBlock { layoutRootPaths { -5 = EXT:contentblocks_reg_api/Resources/Private/Layouts/ } partialRootPaths { 0 = EXT:contentblocks_reg_api/Resources/Private/Partials/ } dataProcessing { 10 = Typo3Contentblocks\ContentblocksRegApi\DataProcessing\CbProcessor 20 = Typo3Contentblocks\ContentblocksRegApi\DataProcessing\FlexFormProcessor } }
Attention: If you change the code, you are responsible for that the code is working. Beware of data processing. Your content block won't work without that.
You can inject your code via the extension settings in the install tool. There you can set the default TypoScript to your specific file like EXT:sitepackage/Configuration/TypoScript/contentBlock.typoscript
.
The second thing in the extension configuration is to enable the frame pallet in the appearance section. This might be a helpful feature if you are using fluid_styled_content or bootstrap_package.