TYPO3v11 with TYPO3v11.2 has been released in beta state and all set ready to bring with it a host of new features. The latest release of TYPO3 v11.2 comes with some new features and improvements.
We’ve been waiting excitedly and so 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 update released, I will note and provide 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.
Development Roadmap of TYPO3 v11
To know ROI, It’s always good to check out future planning of any OpenSource CMS, Here is the TYPO3 Roadmap at https://typo3.org/cms/roadmap.
Check out the well-planned development roadmap of TYPO3v11.
Do you know, that TYPO3 GmbH offers further help and support options for TYPO3 v11 LTS even after 31 October 2024 for up to two extra years.
Isn't that cool? Now let's take a glimpse at upcoming features and improvements!
New TCA type “language”
Another TCA field type called language has been added to TYPO3 Core. Its principal aim is to improve the TCA language configurations. It, consequently, overrides the special=languages choice of TCA column with type=select just as the now misuse of the foreign_table alternative, being set to sys_language.
Therefore, the new field allows to finally decouple the available site languages from the sys_language table. This effectively reduces quite an amount of code and complexity, since no relations have to be fetched and processed anymore.
// Before
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'sys_language',
'items' => [
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages', -1],
['LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.default_value', 0]
],
'default' => 0
]
// After
'config' => [
'type' => 'language'
]
Another trouble spot was the uncommon - 1 language which consistently must be added to each TCA setup manually. Subsequently, a variety of executions of this extraordinary case could be found in one and the same TYPO3 installation.
The new TCA type currently automatically shows all accessible languages for the current setting (the relating site configuration) and furthermore automatically adds the special -1 language for all record types, aside from pages.
// Before
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'special' => 'languages',
'items' => [
[
'LLL:EXT:core/Resources/Private/Language/locallang_general.xlf:LGL.allLanguages',
-1,
'flags-multiple'
],
],
'default' => 0,
]
// After
'config' => [
'type' => 'language'
]
Filterable Trees in Record Selectors and Link Pickers
The Record Selector (otherwise called Element Browser or Link Browser) presently additionally includes the SVG-based page tree and file list.
It has been migrated to SVG rendering in TYPO3 v11.1, has been integrated into the so-called Record Selectors / File Selector (“Element Browser”) and Link Pickers of the TYPO3 backend.
The Record Selectors are utilized when for example selecting a Target Page for a Shortcut Page, or choosing a Storage Page in a module. The file selectors are utilized while selecting a file for an IRRE-based FAL-based record reference.
Due to this all page- and folder-based trees are now completely streamlined all over TYPO3’s backend, in terms of UX and code/implementation. The overall UX feels much faster for every editor of TYPO3, and the consistency makes TYPO3 more intuitive with an improved search/filter and record selector.
Pagination for Form Management
To enhance usability, pagination is now integrated into the form management module. Thus, the listing is now limited to 20 forms per page.
You’ll notice pagination above and below the forms listing in the form management module, which can be used to navigate through the forms listing.
Possibility to disable hreflang per page
In spite of the fact that it should not be expected to disable the hreflang, yet under some uncommon conditions, integrators need to disable the hreflang as well as canonical tags used in links:
<link rel="alternate" hreflang="de" href="..." />
<link rel="canonical" href="..." />
This is now possible on a page-by-page basis by using TypoScript
Examples:
# Disable hreflang attributes:
config.disableHrefLang = 1
# Disable canonical URLs:
config.disableCanonical = 1
FAL: Add getFile() to TYPO3CMSCoreResourceFolder
The object FAL \TYPO3\CMS\Core\Resource\Folder now contains a new convenience method getFile().
The \TYPO3\CMS\Core\Resource\FolderInterface does not contain the definition yet, as this would be a breaking change, thus, a comment is added to make sure the interface gets this addition in TYPO3 v12 as well.
When dealing as a developer with FAL Folder objects, the method $folder->getFile("filename.ext") can now be used instead of $folder->getStorage()->getFileInFolder("filename.ext", $folder).
Allowing group id lookup in conditions with an array operator
In the TYPO3 backend and frontend, the array of user group ids of the current backend client is presently accessible as backend.user.userGroupIds.
In the TYPO3 frontend, the array of user group ids of the current frontend client is accessible as frontend.user.userGroupIds.
This allows for a native Symfony Expression Syntax in TypoScript conditions, e.g.
[4 in frontend.user.userGroupIds]
[2 in backend.user.userGroupIds]
With this syntax, you can match backend user groups in the frontend without a “like” expression on the comma-separated list of user group ids.
Possibility to disable canonical per page
In spite of the fact that it ought not to be expected to disable the generation of canonical, individuals may have a situation to disable it. If for some reason Core does not render the proper canonical tag and also the ModifyUrlForCanonicalTagEvent PSR-14 event is not enough, you are now able to disable the generation of the canonical tag via TypoScript.
To disable the canonical generation, you can add the following line to your TypoScript setup.
config.disableCanonical = 1
Providing a list of available system locales
Each language of a site needs at least one locale that is used to format times, dates, monetary forms, and other locale subordinates' values. Extra locales can be added as fallback regions (comma isolated).
The site setup structure for site languages gives the accessible locales as a select field, enabling simple selection of a value, as opposed to typing in the expected one, which may or probably won't be accessible. Thus giving a rundown of accessible locales makes it quicker and less error-prone to set up a site and its languages.
Backend user’s preferred UI language stored as DB field
An approach that was built over 18 years ago without any significant changes ever since - had several downsides.
In previous TYPO3 versions, administrators could create new backend users and select from the list of all supported TYPO3-internal languages for their backend language (= all labels from XLIFF files).
- The backend user's preferred language is now stored in the database under be_users.lang even if the user changes the language
- Previously, the language information was only stored in this eld initially and then transferred to the user configuration user->uc[lang]
- An upgrade wizard migrates existing uc values into the database field
- The uc entry is kept in sync for backward-compatibility
Integrators can now overwrite the description by using Page TScong. This option can also be used to set a description for a field that does not feature a TCA description yet
Example 1 - set/overwrite a description:
TCEFORM.<table>.<field>.description = <text>
TCEFORM.tt_content.header.description = The headline is the text...
Example 2 - on a per record type basis:
TCEFORM.<table>.<field>.types.<type>.description = Description for <type>
Example 3 - referring to a language le:
TCEFORM.tt_content.header.description = LLL:EXT:my_ext/Resources/Private/ Language/locallang.xlf:description
Resizable navigation component for all element/record selectors
Resizable Navigation Backend users benet from all features such as filtering, collapsing, resizing, etc. which are available in all modals.
Now, any backend user is now able to resize/collapse the navigation area in the Record Selectors / Element Browser shipped with TYPO3 Core.
MFA for System Maintainers
Another choice requires system maintainers to set up multi-factor authentication whenever enabled
Deep Linking in the TYPO3 Backend
Backend module URLs are now reflected into the browser address bar, whenever a backend module or a FormEngine record is opened.
The given URL can be bookmarked or shared with other editors and allows to re-open the TYPO3 backend with the given context.
A custom lit-based web component router is added which reflects module URLs into the browser address bar and at the same time prepares for native web components to be used as future iframe module alternatives.
Error Page Caching
The content of TYPO3 404 Error pages ("page not found") is currently cached in the TYPO3 page cache.
Integrators and administrators are advised not to yield any sensitive data, for example, the user name of an authenticated frontend user.
In the event that the 404 mistake page shows dynamic content, we suggest carrying out a custom PHP-based error handler.
PSR-14 Event on Site Configuration Import
Extensions (site-packages and "distributions") can provide site settings. These settings are deployed when the extensions are installed
A PSR-14 event is now dispatched when the site configuration is imported:
\TYPO3\CMS\Extensionmanager\Event\
AfterExtensionSiteFilesHaveBeenImportedEvent
This enables custom code to access details from the new site configuration.
Hidden-ViewHelper
Another argument respectSubmittedDataValue has been added to the Hidden-ViewHelper. This argument controls the use of early submitted values for the individual fields
Normal use cases are sub-requests when Extbase dispatches a ForwardResponse.
<f:form.hidden
property="hiddenProperty"
value="{form.hiddenProperty}"
respectSubmittedDataValue="false" />
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
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