30+ Amazing Features In TYPO3 v11.4!

30+ Amazing Features In TYPO3 v11.4!

Yay! TYPO3 v11.4 comes with a lot of Backend and user functionality improvements. With vital new features and improvements, our favorite TYPO3 CMS is just getting better.

Unlike us, you must be waiting excitedly for TYPO3 version 11 to launch. Beta TYPO3 version 11.3 is out and we have been following the TYPO3 version 11 development closely and trying out the new features on our test sites. For each TYPO3 version 11.4 released, I’ve provided key specific insights concerning any new features and functionality.

One more thing, this blog is dedicated to TYPO3 people who contribute to the betterment, improvement and enhance the richness of the amazing TYPO3 OpenSource Project.

In this article, we will show you what’s coming in T3v11 with its new power packs added in the latest release.

File List Module

 

It is now also possible to execute actions in the File at Filelist module directly without transferring files to TYPO3's clipboard first.

Backend users can now download multiple files or folders in one go by instructing TYPO3 to create a ZIP archive of them.

The Column Selector is now also available in File -> Filelist for backend user selection to select which fields for files/folders should be shown.

Columns Selector Filter

The column selector in the record list now features a filter at the top. This makes it easier for backend users to enable/disable the right items in particular for tables with many columns.

Workspaces Module

The usability of the Workspaces module has been improved. A dropdown box at the top allows backend users, for example, to switch between workspaces easily.

A new dropdown menu in the Workspaces module enables users to filter items for a specific stage, e.g. "Editing" or "Ready to publish".

Languages/Translations

The "Languages" view under Web -> Page is now better with column view. The default language only shows content elements of this language. Backend users can use the "All languages" item to switch to the column view to show available languages.

TYPO3 Redirects

Backend users can now enable a "never hit" option in Site Management -> Redirects. This filter shows only redirects that were never accessed. Note: the function requires the "redirects hit count" feature activated.

Development Changes for Developers & Integrators

New TCA Type: category

A new TCA eld type "category" has been added to the TYPO3 Core. This supersedes the CategoryRegistry and the method ExtensionManagementUtility->makeCategorizable(). TYPO3 automatically generates the TCA configuration and also adds the database field

Developers can define relations, manyToMany (default), oneToMany, oneToOne for example:

 

$GLOBALS[’TCA’][$myTable][’columns’][’mainCategory’] = [
  ’config’ => [
    ’type’ => ’category’,
    ’relationship’ => ’oneToOne’
    ]
];

File folder Configurations

The TCA configuration "fileFolder" has been streamlined and now the options are now available as "fileFolderConfig". Integrators can overwrite the new TCA configuration in TScong

For example:

 

config.fileFolderConfig.folder
config.fileFolderConfig.allowedExtensions
config.fileFolderConfig.depth

TCA Foreign Table

The foreign_table_where setting in the TCA now also supports the

following markers:

 

###SITE:<KEY>###
(e.g. ###SITE:rootPageId###)

###SITE:<KEY>.<SUBKEY>###
(e.g. ###SITE:mySetting.categoryPid###)

 

This enables developers to access settings from the site configuration

TCA Option treeConfig

A new setting startingPoints has been introduced to the treeConfig TCA configuration

The setting startingPoints lets developers set multiple records as roots for tree records, based on a CSV list of page IDs.

Developers can also access values from the site configuration by using the syntax:

 

"###SITE:...###"

Custom Icon Registration

Extension developers can now register custom icons through a Service Container. The new approach improves the performance of requests. One can store the configuration in file Configuration/Icons.php:

 

<?php
    return [
     ’myicon’ => [
       ’provider’ => \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
      ’source’ => ’EXT:my_extension/Resources/Public/Icons/myicon.svg’
   ]
];

Forms Framework: Datepicker.js

File DatePicker.js has been moved into the directory Resources/Public/JavaScript/Frontend/ of the Form Framework Integrators are now also able to configure an alternative custom publicly accessible directory if required.

Workspaces Module

The UI of the Workspaces module has been improved as well as now administrators can now edit the Workspace settings directly (access through the List module is not required anymore).

Database Identifier Quotation

TCA keys that contain SQL fragments use a new quoting mechanism when the TYPO3 Core builds the database queries (fields such as foreign_table_where, MM_table_where, etc.) 

This is important to ensure DBAL compatibility and makes a database connection unnecessary during TCA cache warmup 

A feature flag "runtimeDbQuotingOfTcaConfiguration" lets integrators/developers force the old behavior if required.

Important Fields

The following two fields are now always enabled/shown in the TCA: 

  • Tt_content.colPos 
  • pages.slug

This prevents integrators from accidentally misconfigure the access permissions for backend users The following TScong overwrites the default settings and hides these fields if required: TCEFORM.pages.slug.disabled = 1 TCEFORM.tt_content.colPos.disabled = 1

New Option: showNewRecordLink

Developers can now disable the "New record" link of TCA inline elements independently from the "+" button and all other "level links". A new option showNewRecordLink has been introduced for this.

SoftReference Parsers

Developers can now register user-defined soft reference parsers.

For example (in le Configuration/Services.yaml): Vendor\MyExtension\SoftReference\MySoftReferenceParser: 

 

tags:
- name: softreference.parser
parserKey: your_key 

 

Parsers have to implement the following new interface: TYPO3\CMS\Core\DataHandling\SoftReference\SoftReferenceParserInterface

Indexed Search

The system extension EXT:indexed_search now features a new configuration option: "basic.deleteFromIndexAfterEditing" 

If enabled (which is the default) and a page or its content is updated, the page and its content are removed from the search index. If this option is disabled, backend users have to manually clear the index as required.

Icons in Reports Module

Developers can now provide icon identifiers in the registration array of the Reports backend module.

CKEditor Plugin "Autolinking"

URLs such as example.com typed in the RTE are automatically converted into an external link

This is done by CKEditor's plugin "AutoLink". Since TYPO3 v11.4, the default schema of these links is https. Editors can, of course, manually update the schema to http if required

Doctrine DBAL: New Method notInSet()

TYPO3's DBAL ExpressionBuilder now also supports the method notInSet()

This works with all officially supported DB engines such as SQLite, MySQL/MariaDB, PostgreSQL, and MSSQL.

The HtmlParser Class

The HTML Parser now supports the attribute "srcset". This is particularly important for responsive images.

TYPO3 CLI

  • New command added to TYPO3's command-line interface (CLI):

./bin/typo3 impexp:export [options] [--] [<filename>]. The command exports the entire TYPO3 page tree or parts of it. Integrators and administrators can influence the export through a wide range of options (e.g. file type, page tree depth, etc.)

Exports can be re-imported into other TYPO3 instances.

  • New command added to TYPO3's command line interface (CLI):
./bin/typo3 cache:warmup [--group <all|system|di|pages|...>]

 

Integrators can now warm up all caches (default) or selectively through the available cache groups

Specific cache groups can be defined with the --group option: system, pages, di, or all (default: all)

  • New command added to TYPO3's command line interface (CLI):
./bin/typo3 cache:flush [--group <all|system|di|pages|...>]

 

Integrators can now flush all caches (default) or selectively through the available cache groups

Global Namespace

When TYPO3 warms up caches, the code of the following files are now scoped into the global namespace: ext_localconf.php and ext_table.php

This means that extension developers must not wrap the content of these files in a local namespace anymore 

Performance Optimization 

To optimize the performance even further, TYPO3 becomes stricter in terms of booting up the core configuration Accessing the database or utilizing the Cache Manager in the following files triggers a deprecation error: 

  • ext_localconf.php 
  • ext_tables.php 
  • Configuration/TCA/* 

Extension authors should make sure that their extensions use proper initialization in the right places

Composer-based Installations

  • The file "PackageStates.php" has become obsolete in Composer-based installations.

All extensions added to the system by Composer are now considered to be active. Therefore, the Extension Manager and the TYPO3 CLI don't offer the option to activate/deactivate extensions anymore.

  • TYPO3 extensions are Composer packages and should be installed using Composer. Do not store extensions in the typo3conf/ext/ directory, if they haven't been installed using Composer. For migration: consider to move them into a separate directory and add the directory as a repository, for example: 
...
"repositories": [{
"type": "path",
"url": "./packages/*/" }],
... 

PSR-14 Events

The following PSR-14 events have been added to the TYPO3 Core:
ProcessFileListActionsEvent
(event res after the actions in the Filelist module are generated)

BootCompletedEvent
(event fires on every request when TYPO3 is fully booted)

ModifyFileDumpEvent
(event fires before dumping a le)

ModifyClearCacheActionsEvent
(event allows for modifying "cache"-items in the backend top toolbar)

AfterFileCommandProcessedEvent
(event allows for executing additional tasks after a file operation has been performed)

The following PSR-14 events have been added to the TYPO3 Core:

  • ModifyRecordListTableActionsEvent
  • ModifyRecordListHeaderColumnsEvent
  • ModifyRecordListRecordActionsEvent

These events can be used to modify the behavior of table listings. They can be used to either add, change, or remove columns and actions.

Attribute "Channel" for Logger Injection (PHP v8)

TYPO3 v11.4 introduces a PHP v8 specific feature: attributes. This PHP feature allows developers to add metadata to classes, methods, variables, etc. Developers can now control the component name that an injected Logger is created with 

New Class LinkResult

A new class has been added to the TYPO3 Core:

 

TYPO3\CMS\Frontend\Typolink\LinkResult

 

This class implements the LinkResultInterface. It represents a created link to a resource (page, email, etc.)

The object contains the base result of a link generated by TypoLink and allows developers to handle link data in a more consistent way. It also simplifies typolink handling in, for example, JSON output.

Application Information

If an active debugger can be determined by the PHP function extension_loaded(), the debugger is listed in the Application Information.

Extbase ObjectManager

The TYPO3 v11 Core does not use the Extbase ObjectManager anymore. All related components have been marked as deprecated. For example, calling ObjectManager->get() now writes a deprecation warning to the log. Developers are encouraged to use Symfony's DependencyInjection component since TYPO3 v10

Generic Extbase Domain Classes

The following generic Extbase domain models and repositories have been marked as deprecated:

 

TYPO3\CMS\Extbase\Domain\Model\BackendUser
TYPO3\CMS\Extbase\Domain\Model\BackendUserGroup
TYPO3\CMS\Extbase\Domain\Model\FrontendUser
TYPO3\CMS\Extbase\Domain\Model\FrontendUserGroup
TYPO3\CMS\Extbase\Domain\Repository\BackendUserRepository
TYPO3\CMS\Extbase\Domain\Repository\BackendUserGroupRepository
TYPO3\CMS\Extbase\Domain\Repository\FrontendUserRepository
TYPO3\CMS\Extbase\Domain\Repository\FrontendUserGroupRepository
TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository

Collection Types of Non-persistent Objects

Collection types are used to define a specific class that should be

within Extbase's ObjectStorage class, for example:

 

/**
* @param ObjectStorage<Item> $items
*/
public function setItems(ObjectStorage $items): void
{
$this->items = $items;
}

 

These docblocks are analyzed so that the PropertyMapper knows howto map incoming requests

Developers can now use collection types in docblock annotations also for non-persistent objects.

Fluid ViewHelpers

The Fluid ViewHelpers "f:uri.external" and "f:link.external" now use https as the default scheme

For example:

 

<f:link.external uri="example.com">
external link
</f:link.external>

 

This generates the link:

 

<a href="https://example.com">external link</a>

 

To overwrite the default value, developers can explicitly set the scheme as follows (e.g. "http"):

 

<f:link.external uri="example.com" defaultScheme="http">
external link
</f:link.external>

Fluid ViewHelpers

The Fluid ViewHelper "f:form.password" now also supports the attribute "autocomplete". This attribute can be used, for example, to instruct password managers how to treat the password input field.

Fluid StandaloneView and ContentObjectRendere

Extensions that create an instance of the StandaloneView should not pass an instance of the ContentObjectRenderer as a constructor argument. Otherwise, TYPO3 generates a deprecation error.

Fluid View Clean-up

Clean-up work has been done to simplify and streamline the Fluid view

The following classes have been marked as deprecated:

 

TYPO3\CMS\Extbase\Mvc\View\EmptyView
TYPO3\CMS\Extbase\Mvc\View\AbstractView

 

The method canRender() has been removed from the following interface:

 

TYPO3\CMS\Extbase\Mvc\View\ViewInterface

Conclusion

We hope this article gives you a good idea of what is coming in the upcoming TYPO3 11.4. Let us know what features you find interesting and what you’d look to see in a future TYPO3 release.

Post Comment

Your email address will not be published. Required fields are marked *

×

Name is required!

Enter valid name

Valid email is required!

Enter valid email address

Comment is required!

Google Captcha Is Required!

Comments :

  • Uwe Beck October 7, 2021 At 12:17 pm
    TYPO3 version 11 LTS is just around the block and I am already very excited for it but here is the thing, over the years I have slightly changed to WordPress from TYPO3 considering the usability and content management features mostly but I still work with TYPO3 on some projects. This blog was everything I needed to be up to date with the latest update on TYPO3 v11. Thanks for the blog, good work.
  • Ben Zimmermann October 5, 2021 At 11:27 am
    TYPO3 v11.1, 11.2, 11.3 and 11.4 has very promising features and I like it so far but one thing I am still worried about is the UI of the backend. When do you think we will get a smooth back-end UI like Wordpress or Wix?
  • Stefan Köhler October 1, 2021 At 11:21 am
    Looking forward to the TYPO3 v11 LTS, all the development cycles of v11 have been very well till now, and looking at the features, I’d say TYPO3 is going towards more usability and less complexity. Let’s wait for October for TYPO3 v11 LTS.

7 Key Changes of TYPO3 v11.5

TYPO3 version11.5 brings even more improvements to the vivid list of functionality and user interface. Let’s hit the highlight…

Automise Your TYPO3 Deployment (2020)

How to Automise Your TYPO3 Deployment (with PHP Deployer)

Are you looking for automatic & modern TYPO3 Deployment? Then, you are in the correct place. In this article, You will learn the…

Improve TYPO3 Development with Composer 2.0

Improve TYPO3 Development with Composer 2.0

Woohoo! TYPO3 (aka PHP) people’s long-awaited Composer 2.0 has been launched with lightning-fast speed. Read this article for…

Stay up to date with our recent TYPO3 Blogs, news, & updates