Introduction

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 central definition. Content Blocks acts hereby as a compiler for more complex low-level code. It adheres to best practices by default, significantly reducing boilerplate code.

For more technical, historical and conceptual insights about Content Blocks we recommend these further readings:

Quick start

If you use the Site Package Builder with the "Site Package Tutorial" package the generated site package contains two example Content Blocks. They are also explained in the Site Package Tutorial, chapter Custom Content Blocks.

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.

  • my-content-block

    • assets

      • icon.svg
    • language

      • labels.xlf
    • templates

      • backend-preview.html
      • frontend.html
    • config.yaml

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.

EXT:some_extension/ContentBlocks/ContentElements/content-block-name/config.yaml
name: vendor/content-block-name
fields:
  - identifier: my_text_field
    type: Text
Copied!

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.

  • my_extension

    • Classes
    • Configuration
    • ContentBlocks

      • ContentElements

        • content-block-1
        • content-block-2
      • PageTypes

        • content-block-3
        • content-block-4
      • RecordTypes

        • content-block-5
        • content-block-6
    • ext_emconf.php
    • composer.json

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.

ContentBlockContentTypeContentElementPageTypeRecordType