FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.
Juhu! TYPO3 v11.4 kommt mit vielen Verbesserungen im Backend und bei den Benutzerfunktionen. Mit wichtigen neuen Funktionen und Verbesserungen wird unser Lieblings-CMS TYPO3 einfach immer besser.
Im Gegensatz zu uns warten Sie sicher schon gespannt auf die Veröffentlichung von TYPO3 Version 11. Die Beta-Version 11.3 von TYPO3 ist da und wir haben die Entwicklung der TYPO3 Version 11 genau verfolgt und die neuen Funktionen auf unseren Test-Sites ausprobiert. Für jede TYPO3 Version 11.4, die veröffentlicht wird, habe ich spezifische Einblicke in die neuen Features und Funktionen gegeben.
Und noch etwas: Dieser Blog ist den TYPO3-Mitarbeitern gewidmet, die dazu beitragen, das TYPO3 OpenSource-Projekt zu verbessern und zu erweitern.
In diesem Artikel werden wir Ihnen zeigen, was in T3v11 mit den neuen Power Packs in der neuesten Version kommt.
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
Modul Dateiliste
Es ist nun auch möglich, Aktionen im Modul File at Filelist direkt auszuführen, ohne Dateien vorher in die Zwischenablage von TYPO3 zu übertragen.
Backend-Benutzer können nun mehrere Dateien oder Ordner auf einmal herunterladen, indem sie TYPO3 anweisen, ein ZIP-Archiv zu erstellen.
Der Spaltenselektor ist jetzt auch in Datei -> Dateiliste für die Backend-Benutzerauswahl verfügbar, um auszuwählen, welche Felder für Dateien/Ordner angezeigt werden sollen.
Spalten Selektor Filter
Der Spaltenselektor in der Datensatzliste verfügt jetzt über einen Filter am oberen Rand. Dies erleichtert es den Backend-Benutzern, die richtigen Elemente zu aktivieren/deaktivieren, insbesondere bei Tabellen mit vielen Spalten.
Modul Arbeitsbereiche
Die Benutzerfreundlichkeit des Moduls "Arbeitsbereiche" wurde verbessert. Eine Dropdown-Box am oberen Rand ermöglicht es Backend-Benutzern zum Beispiel, einfach zwischen Arbeitsbereichen zu wechseln.
Ein neues Dropdown-Menü im Modul "Arbeitsbereiche" ermöglicht es den Nutzern, Elemente nach einem bestimmten Stadium zu filtern, z. B. "Bearbeitung" oder "Bereit zur Veröffentlichung".
Sprachen/Übersetzungen
Die Ansicht "Sprachen" unter Web -> Seite ist jetzt besser mit Spaltenansicht. Die Standardsprache zeigt nur Inhaltselemente dieser Sprache an. Backend-Benutzer können den Punkt "Alle Sprachen" verwenden, um zur Spaltenansicht zu wechseln und die verfügbaren Sprachen anzuzeigen.
TYPO3-Umleitungen.
Backend-Benutzer können jetzt unter Site Management -> Redirects die Option "never hit" aktivieren. Dieser Filter zeigt nur Weiterleitungen an, die nie aufgerufen wurden. Hinweis: Die Funktion erfordert die Aktivierung der Funktion "Weiterleitungs-Trefferzahl".
Änderungen bei der Entwicklung für Entwickler und Integratoren
Neuer TCA-Typ: Kategorie
Dem TYPO3 Core wurde ein neuer TCA Feldtyp "category" hinzugefügt. Dieser löst die CategoryRegistry und die Methode ExtensionManagementUtility->makeCategorizable() ab. TYPO3 generiert automatisch die TCA-Konfiguration und fügt auch das Datenbankfeld
Entwickler können Beziehungen definieren, manyToMany (Standard), oneToMany, oneToOne zum Beispiel:
$GLOBALS[’TCA’][$myTable][’columns’][’mainCategory’] = [
’config’ => [
’type’ => ’category’,
’relationship’ => ’oneToOne’
]
];
Dateiordner Konfigurationen
Die TCA-Konfiguration "fileFolder" wurde gestrafft und die Optionen sind nun als "fileFolderConfig" verfügbar. Integratoren können die neue TCA-Konfiguration in TScong überschreiben
Zum Beispiel:
config.fileFolderConfig.folder
config.fileFolderConfig.allowedExtensions
config.fileFolderConfig.depth
TCA-Auslandstabelle
Die Einstellung foreign_table_where in der TCA unterstützt jetzt auch die
folgende Markierungen:
###SITE:<KEY>###
(e.g. ###SITE:rootPageId###)
###SITE:<KEY>.<SUBKEY>###
(e.g. ###SITE:mySetting.categoryPid###)
Dies ermöglicht Entwicklern den Zugriff auf Einstellungen aus der Site-Konfiguration
TCA-Option treeConfig
Eine neue Einstellung startingPoints wurde in die treeConfig TCA Konfiguration eingeführt
Mit der Einstellung startingPoints können Entwickler mehrere Datensätze als Wurzeln für Baumeinträge festlegen, basierend auf einer CSV-Liste von Seiten-IDs.
Entwickler können auch auf Werte aus der Site-Konfiguration zugreifen, indem sie die Syntax verwenden:
"###SITE:...###"
Benutzerdefinierte Icon-Registrierung
Entwickler von Erweiterungen können jetzt benutzerdefinierte Symbole über einen Service Container registrieren. Der neue Ansatz verbessert die Leistung der Anfragen. Man kann die Konfiguration in der Datei Configuration/Icons.php speichern:
<?php
return [
’myicon’ => [
’provider’ => \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
’source’ => ’EXT:my_extension/Resources/Public/Icons/myicon.svg’
]
];
Forms Framework: Datepicker.js
The DatePicker.js file has been moved to the Resources/Public/JavaScript/Frontend/ directory of the Form Framework. Integrators can now also configure an alternate publicly accessible directory if required.
Modul Arbeitsbereiche
Die Benutzeroberfläche des Moduls Arbeitsbereiche wurde ebenfalls verbessert, da Administratoren nun die Arbeitsbereichseinstellungen direkt bearbeiten können (der Zugriff über das Modul Liste ist nicht mehr erforderlich).
Datenbank-Identifikator Zitat
TCA-Schlüssel, die SQL-Fragmente enthalten, verwenden einen neuen Quoting-Mechanismus, wenn der TYPO3-Kern die Datenbankabfragen erstellt (Felder wie foreign_table_where, MM_table_where, etc.)
Dies ist wichtig, um DBAL-Kompatibilität zu gewährleisten und macht eine Datenbankverbindung während des TCA-Cache-Warmups überflüssig
Mit dem Feature-Flag "runtimeDbQuotingOfTcaConfiguration" können Integratoren/Entwickler bei Bedarf das alte Verhalten erzwingen.
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
Wichtige Felder
Die folgenden zwei Felder sind jetzt immer aktiviert/angezeigt in der TCA:
- Tt_content.colPos
- pages.slug
Dies verhindert, dass Integratoren versehentlich die Zugriffsberechtigungen für Backend-Benutzer falsch konfigurieren. Der folgende TScong überschreibt die Standardeinstellungen und blendet diese Felder bei Bedarf aus: TCEFORM.pages.slug.disabled = 1 TCEFORM.tt_content.colPos.disabled = 1
Neue Option: showNewRecordLink
Entwickler können nun den "Neuer Datensatz"-Link von TCA-Inline-Elementen unabhängig von der "+"-Schaltfläche und allen anderen "Ebenen-Links" deaktivieren. Hierfür wurde eine neue Option showNewRecordLink eingeführt.
SoftReference-Parser
Entwickler können jetzt benutzerdefinierte Soft-Reference-Parser registrieren.
Zum Beispiel (in le Configuration/Services.yaml): Vendor\MyExtension\SoftReference\MySoftReferenceParser:
tags:
- name: softreference.parser
parserKey: your_key
Die Parser müssen die folgende neue Schnittstelle implementieren:
TYPO3\CMS\Core\DataHandling\SoftReference\SoftReferenceParserInterface
Indizierte Suche
Die Systemerweiterung EXT:indexed_search verfügt nun über eine neue Konfigurationsoption: "basic.deleteFromIndexAfterEditing"
Wenn diese Option aktiviert ist (was die Standardeinstellung ist) und eine Seite oder ihr Inhalt aktualisiert wird, werden die Seite und ihr Inhalt aus dem Suchindex entfernt. Wenn diese Option deaktiviert ist, müssen Backend-Benutzer den Index bei Bedarf manuell löschen.
Icons im Modul Berichte
Entwickler können jetzt Icon-Identifikatoren im Registrierungs-Array des Backend-Moduls Reports bereitstellen.
CKEditor Plugin "Autolinking"
URLs wie example.com, die im RTE eingegeben werden, werden automatisch in einen externen Link umgewandelt.
Dies geschieht durch das Plugin "AutoLink" von CKEditor. Seit TYPO3 v11.4 ist das Standardschema für diese Links https. Natürlich können Redakteure das Schema bei Bedarf manuell auf http aktualisieren
Doctrine DBAL: Neue Methode notInSet()
Der DBAL ExpressionBuilder von TYPO3 unterstützt nun auch die Methode notInSet()
Dies funktioniert mit allen offiziell unterstützten DB-Engines wie SQLite, MySQL/MariaDB, PostgreSQL und MSSQL.
Die Klasse HtmlParser
Der HTML-Parser unterstützt jetzt das Attribut "srcset". Dies ist besonders wichtig für responsive Bilder.
TYPO3 CLI
- Die Befehlszeilenschnittstelle (CLI) von TYPO3 wurde um einen neuen Befehl erweitert:
./bin/typo3 impexp:export [options] [--] [<filename>]. Der Befehl exportiert den gesamten TYPO3-Seitenbaum oder Teile davon. Integratoren und Administratoren können den Export durch eine Vielzahl von Optionen beeinflussen (z.B. Dateityp, Seitenbaumtiefe, etc.)
Exporte können in andere TYPO3-Instanzen re-importiert werden.
- Neuer Befehl zur TYPO3-Befehlszeilenschnittstelle (CLI) hinzugefügt:
./bin/typo3 cache:warmup [--group <all|system|di|pages|...>]
Integratoren können nun alle Caches (Standard) oder selektiv über die verfügbaren Cache-Gruppen aufwärmen
Spezifische Cache-Gruppen können mit der Option --group definiert werden: system, pages, di oder all (Standard: all)
- Neuer Befehl zur TYPO3-Befehlszeilenschnittstelle (CLI) hinzugefügt:
./bin/typo3 cache:flush [--group <all|system|di|pages|...>]
Integratoren können nun alle Caches flushen (Standard) oder selektiv durch die verfügbaren Cache-Gruppen
Global Namespace
Wenn TYPO3 den Cache aufwärmt, wird der Code der folgenden Dateien nun in den globalen Namespace gescoped: ext_localconf.php und ext_table.php
Das bedeutet, dass Extension-Entwickler den Inhalt dieser Dateien nicht mehr in einen lokalen Namespace verpacken müssen
Performance-Optimierung
Um die Performance weiter zu optimieren, wird TYPO3 strenger, was das Hochfahren der Kernkonfiguration angeht. Der Zugriff auf die Datenbank oder die Verwendung des Cache-Managers in den folgenden Dateien löst einen Deprecation-Fehler aus:
Übersetzt mit www.DeepL.com/Translator (kostenlose Version)
- ext_localconf.php
- ext_tables.php
- Configuration/TCA/*
Autoren von Erweiterungen sollten sicherstellen, dass ihre Erweiterungen die richtige Initialisierung an den richtigen Stellen verwenden
Composer-basierte Installationen
- Die Datei "PackageStates.php" ist in Composer-basierten Installationen überflüssig geworden.
Alle vom Composer zum System hinzugefügten Erweiterungen werden nun als aktiv betrachtet. Daher bieten der Extension Manager und die TYPO3 CLI nicht mehr die Möglichkeit, Erweiterungen zu aktivieren/deaktivieren.
- TYPO3-Erweiterungen sind Composer-Pakete und sollten mit Composer installiert werden. Speichern Sie Erweiterungen nicht im Verzeichnis typo3conf/ext/, wenn sie nicht mit Composer installiert wurden. Für die Migration: Ziehen Sie in Erwägung, sie in ein separates Verzeichnis zu verschieben und fügen Sie das Verzeichnis als Repository hinzu, zum Beispiel:
...
"repositories": [{
"type": "path",
"url": "./packages/*/" }],
...
PSR-14 Ereignisse
Die folgenden PSR-14-Ereignisse wurden dem TYPO3 Core hinzugefügt:
ProcessFileListActionsEvent
(Ereignis, nachdem die Aktionen im Dateilistenmodul erzeugt wurden)
BootCompletedEvent
(Ereignis wird bei jeder Anfrage ausgelöst, wenn TYPO3 vollständig gebootet ist)
ModifyFileDumpEvent
(Ereignis wird ausgelöst, bevor eine Datei entladen wird)
ModifyClearCacheActionsEvent
(Ereignis ermöglicht die Änderung von "Cache"-Einträgen in der oberen Symbolleiste des Backends)
AfterFileCommandProcessedEvent
(Ereignis ermöglicht die Ausführung zusätzlicher Aufgaben, nachdem eine Dateioperation ausgeführt wurde)
Die folgenden PSR-14-Ereignisse wurden dem TYPO3 Core hinzugefügt:
- ModifyRecordListTableActionsEvent
- ModifyRecordListHeaderColumnsEvent
- ModifyRecordListRecordActionsEvent
Diese Ereignisse können verwendet werden, um das Verhalten von Tabellenauflistungen zu ändern. Sie können verwendet werden, um Spalten und Aktionen entweder hinzuzufügen, zu ändern oder zu entfernen.
Attribut "Kanal" für Logger Injection (PHP v8)
TYPO3 v11.4 führt eine PHP v8 spezifische Funktion ein: Attribute. Dieses PHP-Feature ermöglicht es Entwicklern, Metadaten zu Klassen, Methoden, Variablen usw. hinzuzufügen. Entwickler können nun den Komponentennamen kontrollieren, mit dem ein injizierter Logger erstellt wird
Neue Klasse LinkResult
Der TYPO3 Core wurde um eine neue Klasse erweitert:
TYPO3\CMS\Frontend\Typolink\LinkResult
Diese Klasse implementiert das LinkResultInterface. Sie repräsentiert einen erstellten Link zu einer Ressource (Seite, E-Mail, etc.)
Das Objekt enthält das Basisergebnis eines von TypoLink erzeugten Links und ermöglicht es Entwicklern, Linkdaten auf konsistentere Weise zu behandeln. Es vereinfacht auch die Handhabung von Typolinks, z. B. bei der JSON-Ausgabe.
Informationen zur Bewerbung
Wenn ein aktiver Debugger durch die PHP-Funktion extension_loaded() ermittelt werden kann, wird der Debugger in den Anwendungsinformationen aufgeführt.
Extbase ObjectManager
Der TYPO3 v11 Core verwendet den Extbase ObjectManager nicht mehr. Alle zugehörigen Komponenten wurden als veraltet markiert. Zum Beispiel schreibt der Aufruf von ObjectManager->get() nun eine Deprecation-Warnung in das Log. Entwicklern wird empfohlen, seit TYPO3 v10 die DependencyInjection-Komponente von Symfony zu verwenden.
Generische Extbase Domain-Klassen
Die folgenden generischen Extbase-Domänenmodelle und -Repositories wurden als veraltet markiert:
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
Sammlungsarten von nicht-persistenten Objekten
Sammlungstypen werden verwendet, um eine bestimmte Klasse zu definieren, die
innerhalb der ObjectStorage-Klasse von Extbase, zum Beispiel:
/**
* @param ObjectStorage<Item> $items
*/
public function setItems(ObjectStorage $items): void
{
$this->items = $items;
}
Diese Docblocks werden analysiert, damit der PropertyMapper weiß, wie er eingehende Anfragen zuordnen soll.
Entwickler können nun Auflistungstypen in Docblock-Annotationen auch für nicht-persistente Objekte verwenden.
Fluid ViewHelpers
Die Fluid ViewHelpers "f:uri.external" und "f:link.external" verwenden nun https als Standardschema
Zum Beispiel:
<f:link.external uri="example.com">
externer Link
</f:link.external>
Dadurch wird der Link erzeugt:
<a href="https://example.com">external link</a>
Um den Standardwert zu überschreiben, können Entwickler das Schema wie folgt explizit festlegen (z. B. "http"):
<f:link.external uri="example.com" defaultScheme="http">
externer Link
</f:link.external>
Fluid ViewHelpers
Der Fluid ViewHelper "f:form.password" unterstützt nun auch das Attribut "autocomplete". Dieses Attribut kann z.B. verwendet werden, um Passwort-Managern mitzuteilen, wie sie das Passwort-Eingabefeld behandeln sollen.
Fluid StandaloneView und ContentObjectRendere
Erweiterungen, die eine Instanz der StandaloneView erzeugen, sollten keine Instanz des ContentObjectRenderers als Konstruktor-Argument übergeben. Andernfalls generiert TYPO3 einen Deprecation-Fehler.
Fluid View Clean-up
Es wurden Aufräumarbeiten durchgeführt, um die Fluid-Ansicht zu vereinfachen und zu rationalisieren
Die folgenden Klassen wurden als veraltet gekennzeichnet:
TYPO3\CMS\Extbase\Mvc\View\EmptyView
TYPO3\CMS\Extbase\Mvc\View\AbstractView
Die Methode canRender() wurde aus der folgenden Schnittstelle entfernt:
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