Kickstart command

The command make:content-block creates a bare-minimum Content Block. This is actually an alias for content-blocks:create, which is inspired by the EXT:make extension.

Options

Name Type Default Required
string content-element true
string (vendor of root composer.json) true
string true
string true
string
string|int
string content-blocks-skeleton
string content-blocks.yaml

content-type

content-type
Type
string
Required

true

Default
content-element

content-element, page-type or record-type

vendor

vendor
Type
string
Required

true

Default
(vendor of root composer.json)

Your vendor name. Lowercase, separated by dashes.

name

name
Type
string
Required

true

Your Content Block name (this is not the title). Lowercase, separated by dashes.

extension

extension
Type
string
Required

true

The host extension, where to store your new Content Block.

title

title
Type
string

The human-readable title for your Content Block.

type-name

type-name
Type
string|int

Custom type name. Required for content-type page-type (must be int).

skeleton-path

skeleton-path
Type
string
Default
content-blocks-skeleton

A path relative to the current working directory, which holds a skeleton of a Content Block. Only needed, if you want to use a different name or path other than content-blocks-skeleton.

  • content-blocks-skeleton

    • content-element

      • assets

        • icon.svg
      • templates

        • backend-preview.html
        • frontend.html
    • page-type
    • record-type

Learn more about Content Blocks skeleton

config-path

config-path
Type
string
Default
content-blocks.yaml

A path to a yaml config file path, which contains defaults for this command.

Learn more about Content Blocks defaults

This will give you an overview of all available options:

vendor/bin/typo3 make:content-block --help
Copied!

Example creating a Content Block skeleton in one line:

vendor/bin/typo3 make:content-block --content-type="content-element" --vendor="my-vendor" --name="my-name" --title="My shiny new Content Element" --extension="my_sitepackage"
Copied!

Alternatively, the command can guide you through the creation by omitting the required options:

vendor/bin/typo3 make:content-block
Copied!

On non-composer installations use:

typo3/sysext/core/bin/typo3 make:content-block
Copied!

Example interaction:

Choose the content type of your content block [Content Element]:
[content-element] Content Element
[page-type      ] Page Type
[record-type    ] Record Type
> content-element

Enter your vendor name:
> my-vendor

Enter your content block name:
> my-content-block-name

Choose an extension in which the content block should be stored:
[sitepackage] Test Package for content blocks
> sitepackage
Copied!

After running the make command

In order to create newly added database tables or fields, you have to clear the caches and then run the database compare. You can do the same in the TYPO3 Backend by using the Database Analyzer. Repeat this step every time you add new fields to your Content Block definition.

vendor/bin/typo3 cache:flush -g system
vendor/bin/typo3 extension:setup --extension=my_sitepackage
Copied!

Content Block skeleton

New in version 1.1

It is now possible to define a "skeleton" for your Content Blocks. To do this create a folder called content-blocks-skeleton in your project root. This folder may contain default templates or assets for one or more Content Types. It is used as a base when creating new types with the make:content-block command. In order to add a skeleton for Content Elements, create a folder called content-element within that directory. Then, the structure is identical to your concrete Content Block as you know it. You may place any files there. They will simply be copied when a new Content Block is created. It is not possible to define language/labels.xlf or config.yaml this way, as they are dynamically generated based on your arguments.

  • content-blocks-skeleton

    • content-element

      • assets

        • icon.svg
      • templates

        • backend-preview.html
        • frontend.html
    • page-type
    • record-type

In case you want to name the skeleton folder differently or place it somewhere else, you can override the default folder by providing the option --skeleton-path with a relative path to your current working directory.

You can use an alternative skeleton path
vendor/bin/typo3 make:content-block --skeleton-path="my-alternative-skeleton-path"
Copied!

Defaults

New in version 1.1

It is now possible to define default options for this command via a yaml config file. By default, the command looks for a file called content-blocks.yaml in the current working directory. The location and name can be overridden with the --config-path option.

vendor/bin/typo3 make:content-block --config-path="some-folder/my-config.yaml"
Copied!

An example yaml config file contents may look like this:

content-blocks.yaml
vendor: nh
extension: content_blocks_examples
content-type: record-type
skeleton-path: folder1/content-block-skeletons
Copied!

This config sets defaults for vendor, skeleton-path, extension and content-type. These are all possible options right now.

Now, whenever you run this command, these options will be set by default. This does not mean, the questions for these options will be skipped, only that they are the default value, if you just press Enter without any input. They will be visible in brackets at the very right [default value].