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.

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.

 

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.

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.

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".

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.

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.

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’
    ]
];

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

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

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:...###"

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’
   ]
];

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.

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).

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.

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

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.

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

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.

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

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

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 HTML Parser now supports the attribute "srcset". This is particularly important for responsive images.

  • 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

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/*/" }], 
... 

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.

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 

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.

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

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

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 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.

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>

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.

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

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 a Comment

×
Captcha Code Can't read the image? Click here to refresh