Introduction
Defining "Content Elements" in TYPO3 is hard and the learning curve is steep.
A Content Block is a simplified, component-based approach of defining Content Types in TYPO3. This includes Content Elements, Page Types and generic Record Types. A YAML file serves as a basis for field definitions. Content Blocks acts hereby as a generator for more complicated low-level code and makes smart assumptions based on best practice. This significantly reduces redundancies as well as boilerplate code and enables users to concentrate on their domain logic.
Note
Content Blocks started out as a layer on top of TYPO3 and still is. The long-term goal is to integrate the concept of a Content Block into the Core as a first-class citizen. As of now, some knowledge of the underlying Core API is required to fully grasp the possibilities of this extension and how to customize the result.
For more technical, historical and conceptual insights about Content Blocks we recommend these further readings:
Definition
The goal is to encapsulate all resources belonging to the Content Block inside one component. This leads to re-usable components, which can be easily copy-pasted into other projects.
├── assets
│ └── icon.svg
├── language
│ └── labels.xlf
├── templates
│ ├── backend-preview.html
│ └── frontend.html
└── config.yaml
- Learn more about the Content Block definition
config.yaml
This file is the basis for the definition. It defines exactly one Content Type. Using YAML over PHP includes a wider range of people, which is able to modify Content Blocks without the need of a developer.
name: vendor/content-block-name
fields:
- identifier: my_text_field
type: Text
- Refer to the YAML reference for a complete overview.
- Learn more about reusing fields
- Learn how to extend TCA of Content Blocks (for advanced users).
Registration
The registration works by simply placing a Content Block into a dedicated folder. For this purpose an already loaded extension is required as a host. Depending on the Content Type the Content Block is put into a predestinated sub-folder.
ContentBlocks
folder of an extension
├── Classes
├── Configuration
├── ContentBlocks
│ ├── ContentElements
│ │ ├── block1
│ │ └── block2
│ ├── PageTypes
│ │ ├── block3
│ │ └── block4
│ └── RecordTypes
│ ├── block5
│ └── block6
├── Resources
└── composer.json
- Kickstart a Content Block with the make:content-block command
- Learn more about the registration process
Terminology
Content Blocks is the name of the extension and generates the code for the Core API.
A single Content Block is a small chunk of information, which defines exactly one Content Type.
A Content Type is an entity in TYPO3, which defines a set of fields and their behavior.
A Content Element is a special Content Type, which has a frontend rendering definition.
A Page Type is a special Content Type, which defines the behavior of a web page.
A Record Type is a generic Content Type.