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
Dhyana Chauhan
Tech Expert & Customer ManagerDhyana Chauhan is the customer support manager at T3Planet, having vast experience as an technology lead who loves exploring everything that’s in trend, especially TYPO3. Being a TYPO3 fanatic, in her free time, she loves…
More From Author