FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.
Sind Sie neugierig auf die innovativen Verbesserungen von TYPO3 v13? Unser umfassender Upgrade-Leitfaden enthüllt alle wichtigen Neuerungen - von wichtigen Breakpoints bis hin zu zukunftssicheren Abkündigungen - und sorgt dafür, dass Ihre Website reibungslos in die nächste TYPO3 CMS Ära übergeht.
TYPO3 v13 ist ein leistungsstarkes Upgrade, das die Plattform modernisiert und Altlasten beseitigt. Wie bei jedem größeren Versionssprung werden sich neue Codierungsstandards, interne Klassenänderungen und umstrukturierte Hooks auf Ihre Projekte auswirken. Im Folgenden werden die wichtigsten Änderungen (die eine sofortige Aktualisierung des Codes erfordern), die wichtigsten Änderungen (die sich auf das Verhalten oder die Abhängigkeiten auswirken können) und die Verwerfungen (die jetzt verfügbar sind, aber in Version 14 entfernt werden) aufgeführt.
Nutzen Sie diese Referenz, um Ihre Migration zu TYPO3 v13 zu rationalisieren und einen reibungslosen Ablauf zu gewährleisten.
Wenn Sie mehr über die Funktionen von TYPO3 v13 erfahren möchten, werfen Sie einen Blick auf unsere TYPO3-Featureserie (siehe unten).
Die wichtigsten Änderungen in TYPO3 CMS v13
Diese Änderungen werden Ihre Website zerstören, wenn sie nicht vor oder während des Upgrades auf TYPO3 v13 behoben werden. Prüfen Sie den Code sorgfältig und korrigieren Sie alle unten aufgeführten Verweise.
1. ExpressionBuilder Änderungen
Die Signatur der folgenden Methoden wurde geändert.
- ExpressionBuilder::literal(string $value) erfordert unbedingt einen String.
- ExpressionBuilder::trim() erfordert \Doctrine\DBAL\Platforms\TrimMode enum anstelle von Ganzzahlen.
// Before v13
$queryBuilder->expr()->comparison(
$queryBuilder->expr()->trim($fieldName, 1), // integer usage
ExpressionBuilder::EQ,
$queryBuilder->createNamedParameter('', Connection::PARAM_STR)
);
// After v13
use Doctrine\DBAL\Platforms\TrimMode;
$queryBuilder->expr()->comparison(
$queryBuilder->expr()->trim($fieldName, TrimMode::LEADING),
ExpressionBuilder::EQ,
$queryBuilder->createNamedParameter('', Connection::PARAM_STR)
);
2. QueryBuilder-Änderungen
- Entfernte Methoden: add(), getQueryPart(), getQueryParts(), resetQueryPart(), resetQueryParts(), execute(), getQueryParts(), setMaxResults() usw.
- Verwenden Sie ->executeQuery() (SELECT) oder ->executeStatement() (INSERT/UPDATE/DELETE).
- (int)0 bedeutet nicht mehr "unbegrenzt" in setMaxResults(). Verwenden Sie null.
// Before v13
$queryBuilder->add('select', ['uid', 'title']);
$result = $queryBuilder->execute(); // was used for SELECT
$queryBuilder->setMaxResults(0); // unlimited
3. LoginType in Native Backed Enum umwandeln
- \TYPO3\CMS\Core\Authentication\LoginType ist jetzt ein natives PHP-Enum.
- Die alten Konstanten LoginType::LOGIN, LoginType::LOGOUT usw. sind verschwunden; verwenden Sie ->value oder tryFrom().
// Before v13
if ($loginType === \TYPO3\CMS\Core\Authentication\LoginType::LOGIN) {
// ...
}
// After v13
use TYPO3\CMS\Core\Authentication\LoginType;
if (LoginType::tryFrom($value ?? '') === LoginType::LOGIN) {
// login
}
4. Seite Doktortyp "Recycler" entfernt
- Doktype 255 für "Recycler"-Seiten gibt es nicht mehr.
- Verwenden Sie stattdessen das Recycler-Modul zum sanften Löschen.
5. PageTsBackendLayoutDataProvider als endgültig markieren
- \TYPO3\CMS\Backend\View\BackendLayout\PageTsBackendLayoutDataProvider ist endgültig.
- Sie können ihn nicht mehr erweitern; implementieren Sie einen benutzerdefinierten Anbieter.
// Before v13
class MyProvider extends PageTsBackendLayoutDataProvider {
// ...
}
// After v13
class MyProvider implements c {
// ...
}
6. Fallback-Entfernung für CKEditor removePlugins
- String-basierter Fallback für removePlugins in YAML wird entfernt.
- Muss Plugins als Array angeben.
// Before v13
editor:
config:
removePlugins: image
// After v13
editor:
config:
removePlugins:
- image
7. Indizierte Suche als Inhaltstyp deklarieren
- EXT:indexed_search wird als Inhaltselement und nicht als Plugin erkannt.
- Ein Upgrade-Assistent hilft bei der Migration von alten Plugin-Referenzen zu Inhaltstypen.
// Before v13
tt_content.indexed_search = COA
// After v13
Use the wizard “Migrate Indexed Search plugins to content elements.”
Handled as a standard CType in TCA.
8. getAllPageNumbers() in PaginationInterface
- getAllPageNumbers() wurde entfernt/geändert.
- Wenn Sie Seitenarrays benötigen, verwenden Sie SimplePagination, SlidingWindowPagination oder eine eigene Logik.
// Before v13
$pages = $pagination->getAllPageNumbers();
// After v13
This method is gone.
Use getFirstPageNumber(), getLastPageNumber(), or create your own iteration logic.
9. Fortlaufende Array-Schlüssel in intExplode()
Wenn removeEmptyEntries = true ist, liefert GeneralUtility::intExplode() fortlaufende numerische Schlüssel (keine Lücken).
// Before v13
GeneralUtility::intExplode(',', '1,,3', true);
// Result: [0 => 1, 2 => 3]
// After v13
GeneralUtility::intExplode(',', '1,,3', true);
// Result: [0 => 1, 1 => 3]
10. BIGINT für Datetime TCA-Felder verwenden
- Das TCA-Attribut 'type' => 'datetime' wird verwendet, um Tabellenspalten standardmäßig als vorzeichenbehaftete Ganzzahlen zu erstellen, es sei denn, es wird in ext_tables.sql explizit anders angegeben oder ausgenommen (z. B. starttime, endtime, tstamp, crdate).
- Vermeidung des 2038-Problems und Ermöglichung größerer Zeitstempelbereiche.
// Before v13
crdate INT(11) DEFAULT '0'
// After v13
crdate BIGINT(20) DEFAULT '0'
11. ContentObject stdWrap Hook entfernt
- Der Hook $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'] wird entfernt.
- Verwenden Sie PSR-14-Ereignisse für die Manipulation von stdWrap.
// Before v13
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['stdWrap'][] =
\Vendor\Extension\Hooks\StdWrapHook::class;
// After v13
Implement the relevant PSR-14 event.
Remove the old hook reference.
12. Haken zum Überschreiben des Icon Overlay Identifiers entfernt
- Hook
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Core\Imaging\IconFactory']['overrideIconOverlay'] ist verschwunden - Wurde ersetzt durch
\TYPO3\CMS\Core\Imaging\Event\ModifyRecordOverlayIconIdentifierEvent.
// Before v13
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['TYPO3\CMS\Core\Imaging\IconFactory']['overrideIconOverlay'] =
\Vendor\Extension\Hooks\IconOverlayHook::class;
// After v13
Use the new PSR-14 event approach.
13. Hook zur Manipulation des getData-Ergebnisses entfernt
- $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['getData'] wird entfernt.
- Migrieren Sie zu \TYPO3\CMS\Frontend\ContentObject\Event\AfterGetDataResolvedEvent.
// Before v13
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['getData'][] =
\Vendor\Extension\Hooks\GetDataHook::class;
// After v13
Implement the new PSR-14 event.
14. Hook zur Manipulation des ContentObjectRenderers entfernt
- $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['postInit'] wird entfernt.
- Verwenden Sie \TYPO3\CMS\Frontend\ContentObject\Event\AfterContentObjectRendererInitializedEvent.
// Before v13
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_content.php']['postInit'][] =
\Vendor\Extension\Hooks\MyHook::class;
// After v13
Implement the new PSR-14 event.
15. Externe Linktypen standardmäßig deaktivieren (EXT:linkvalidator)
- EXT:linkvalidator prüft standardmäßig keine externen Links mehr.
- Sie müssen sie explizit aktivieren.
// Before v13
External link checks might be on by default.
// After v13
mod.linkvalidator.linktypes = db,file,external
16. TSFE->fe_user wurde entfernt
- Die Eigenschaft$TSFE->fe_user wird entfernt.
- Verwenden Sie die Kontext-API oder Anforderungsattribute, um auf Benutzerdaten zuzugreifen.
// Before v13
if ($GLOBALS['TSFE']->fe_user->user['username']) {
// ...
}
// After v13
Context API Example:
use TYPO3\CMS\Core\Context\Context;
public function __construct(
private readonly Context $context,
) {}
$username = $this->context->getPropertyFromAspect('frontend.user', 'username', '');
$frontendUser = $this->request->getAttribute('frontend.user');
$username = $frontendUser->user['username'] ?? '';
17. Strikte Typen in Extbase verwenden
- Extbase-Controller erzwingen nun strenge Typdeklarationen für Eigenschaften und Methoden.
- Falsches Überschreiben wird zu Fehlern führen.
// Before v13
class MyController extends ActionController
{
public string $errorMethodName = 'myAction';
}
// After v13
class MyController extends ActionController
{
public function __construct()
{
$this->errorMethodName = 'myAction';
}
// All methods properly typed
}
18. Entfernt TypoScript Einstellung showForgotPasswordLink in ext:felogin
- plugin.tx_felogin_pi1.showForgotPasswordLink wird entfernt.
- Verwenden Sie stattdessen showForgotPassword.
// Before v13
plugin.tx_felogin_pi1.showForgotPasswordLink = 1
// After v13
plugin.tx_felogin_pi1.showForgotPassword = 1
19. Elemente aus dem Assistenten für neue Inhaltselemente entfernen
- Der Assistent wird nun automatisch von TCA abgeleitet.
- Anstelle von show:= removeFromList(...), verwenden Sie removeItems := addToList(...).
// Before v13
mod.wizards.newContentElement.wizardItems.<group>.show := removeFromList(html)
// After v13
mod.wizards.newContentElement.wizardItems.<group>.removeItems := addToList(html)
Wichtige Änderungen in TYPO3 Version 13
Diese wichtigen TYPO3 version 13 Änderungen machen Ihren Code zwar nicht völlig kaputt, können aber das Verhalten oder die Abhängigkeiten erheblich beeinflussen. Achten Sie darauf, sie zu berücksichtigen, damit das Projekt reibungsloser abläuft.
A. Aktualisierte Dependenz: Symfony 7
- TYPO3 v13 erfordert Symfony 7 Komponenten.
- Wenn Ihre Extension von älteren Symfony-Versionen abhängt, prüfen Sie die Kompatibilität.
B. Aktualisierte Dependenz: Doctrine DBAL 4
- Doctrine DBAL upgraded to version 4.
- Affects QueryBuilder method usage (some removed or changed).
- Coordinates with the Breaking Changes for QueryBuilder and ExpressionBuilder.
C. Geänderter Standardwert für das Feld twitter_card
- Der Standardwert für das twitter_card-Feld wurde von "summary" in "summary_large_image" geändert.
- Dies wirkt sich darauf aus, wie Seiten in sozialen Vorschauen gerendert werden, wenn Sie sich auf Standardwerte verlassen.
D. Unbenutzte DB-Felder aus tt_content entfernt
- Einige Legacy-Spalten in tt_content werden jetzt entfernt.
- Wenn Ihre Erweiterung auf sie verweist, werden Sie Fehler oder fehlende Daten haben.
F. Datenbanktabelle cache_treelist entfernt
- Die Tabelle "cache_treelist“ wird entfernt.
- Wenn Sie Verweise auf diese Tabelle hatten, entfernen Sie diese.
Verwerfungen
Diese Funktionen oder Methoden sind in TYPO3 v13 noch vorhanden, werden aber in v14 entfernt. Aktualisieren Sie sie jetzt , um Ihren Code zukunftssicher zu machen!
- ExtensionManagementUtility::addPageTSConfig()
- DuplicationBehavior Klasse
- AbstractFile::FILETYPE_* Konstanten
- DataProviderContext Getters/Setters)
- TypoScriptFrontendController und $GLOBALS['TSFE']
- Fluid Eigenständige Methoden
- Tabellenabhängige Definition von columnsOnly
- Namespaced Shorthand Validator Verwendung in Extbase
- Benutzerdefinierte Fluid Views & Extbase
- renderStatic() für Fluid ViewHelper
- Instanziierung der IconRegistry in ext_localconf.php
- INCLUDE_TYPOSCRIPT Syntax
- Plugin-Inhaltselement & SubTypes
- @typo3/backend/wizard.js
- ID der Seitenbaum-Navigationskomponente umbenannt (
- GeneralUtility::hmac()
- Fluid-Variablen: true, false, null
In-Depth Deprecation Snippets
Nachfolgend finden Sie eine kurze Zusammenfassung; alle Einzelheiten und Migrationsschritte finden Sie in den offiziellen Dokumenten.
1. ExtensionManagementUtility::addPageTSConfig()
- Veraltete Methode; verwenden Sie Configuration/page.tsconfig für Ihre Page TS.
- Wird in v14 entfernt werden.
2. DuplicationBehavior Class
- Die alte Klasse ist veraltet; verwenden Sie \TYPO3\CMS\Core\Resource\Enum\DuplicationBehavior.
// Before
$behavior = \TYPO3\CMS\Core\Resource\DuplicationBehavior::RENAME;
// After
$behavior = \TYPO3\CMS\Core\Resource\Enum\DuplicationBehavior::RENAME;
3. AbstractFile::FILETYPE_* Constants
Die Verwendung der Konstanten \TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_* ist jetzt veraltet.
// Before v13
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_UNKNOWN \TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_TEXT \TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_IMAGE \TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_AUDIO \TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_VIDEO \TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_APPLICATION
// After v13
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_UNKNOWN -> \TYPO3\CMS\Core\Resource\FileType::UNKNOWN->value
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_TEXT -> \TYPO3\CMS\Core\Resource\FileType::TEXT->value
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_IMAGE -> \TYPO3\CMS\Core\Resource\FileType::IMAGE->value
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_AUDIO -> \TYPO3\CMS\Core\Resource\FileType::AUDIO->value
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_VIDEO -> \TYPO3\CMS\Core\Resource\FileType::VIDEO->value
\TYPO3\CMS\Core\Resource\AbstractFile::FILETYPE_APPLICATION -> \TYPO3\CMS\Core\Resource\FileType::APPLICATION->value
4. DataProviderContext Getter/Setter
- In TYPO3 v13.4 wurde die Klasse \TYPO3\CMS\Backend\View\BackendLayout\DataProviderContext aktualisiert, um Public Constructor Property Promotion (PCPP) zu verwenden. Alle setX() und getX() Methoden sind nun veraltet und werden in TYPO3 v14.0 entfernt. Die Klasse wird als schreibgeschützt deklariert und erzwingt die PCPP-Instanziierung in v14.0. Darüber hinaus wurde sie als final deklariert, um sicherzustellen, dass sie unveränderbar bleibt, und ihre Konstruktorargumente werden in TYPO3 v14.0 nicht mehr optional sein.
Verwenden Sie die Eigenschaften anstelle des Setters, Beispiel:
// Before v13
$dataProviderContext = GeneralUtility::makeInstance(DataProviderContext::class);
$dataProviderContext
->setPageId($pageId)
->setData($parameters['row'])
->setTableName($parameters['table'])
->setFieldName($parameters['field'])
->setPageTsConfig($pageTsConfig);
// After v13
$dataProviderContext = new DataProviderContext(
pageId: $pageId,
tableName: $parameters['table'],
fieldName: $parameters['field'],
data: $parameters['row'],
pageTsConfig: $pageTsConfig,
);
// Before
$pageId = $dataProviderContext->getPageId()
// After
$pageId = $dataProviderContext->pageId
5. TypoScriptFrontendController und $GLOBALS['TSFE']
- Die Klasse \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController und ihre globale Instanz, $GLOBALS['TSFE'], sind veraltet und sollen in TYPO3 v14 entfernt werden.
- Verwenden Sie Anforderungsattribute oder die Context API.
// Before v13
$feUser = $GLOBALS['TSFE']->fe_user->user;
// After v13
use TYPO3\CMS\Core\Context\Context;
$feUser = GeneralUtility::makeInstance(Context::class)
->getPropertyFromAspect('frontend.user', 'user');
6. Fluid-Eigenständige Methoden
- Einige Methoden wie TYPO3Fluid\Fluid\Core\ViewHelper\AbstractTagBasedViewHelper->registerUniversalTagAttributes() und AbstractTagBasedViewHelper->registerTagAttribute() sind veraltet.
- Prüfen Sie die Fluid-Dokumente auf aktualisierte Verwendungsmuster.
7. Tabellenabhängige Definition von columnsOnly
- Bei der Verknüpfung mit dem Bearbeitungsformular ist es möglich, den EditDocumentController anzuweisen, nur eine Teilmenge der verfügbaren Felder für relevante Datensätze unter Verwendung der columnsOnly-Funktionalität zu rendern, indem die zu rendernden Felder als kommagetrennte Liste hinzugefügt werden.
- Die darzustellenden Felder müssen als Array unter dem jeweiligen Tabellennamen angegeben werden.
// Before v13
$urlParameters = [
'edit' => [
'pages' => [
1 => 'edit',
],
],
'columnsOnly' => 'title,slug'
'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri(),
];
GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute('record_edit', $urlParameters);
// After v13
$urlParameters = [
'edit' => [
'pages' => [
1 => 'edit',
],
],
'columnsOnly' => [
'pages' => [
'title',
'slug'
]
],
'returnUrl' => $request->getAttribute('normalizedParams')->getRequestUri(),
];
GeneralUtility::makeInstance(UriBuilder::class)->buildUriFromRoute('record_edit', $urlParameters);
8. Namespaced Shorthand Validator Verwendung in Extbase
- In Extbase können Sie die Namespaced Shorthand Notation verwenden, um Validatoren zu Eigenschaften oder Argumenten hinzuzufügen. Zum Beispiel:
- TYPO3.CMS.Extbase:NotEmpty entspricht \TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator.
- Vendor.Extension:Custom entspricht \Vendor\MyExtension\Validation\Validator\CustomValidator.
// Before v13
/**
* @Extbase\Validate("TYPO3.CMS.Extbase:NotEmpty")
*/
protected $myProperty1;
/**
* @Extbase\Validate("Vendor.Extension:Custom")
*/
protected $myProperty2;
// After v13
/**
* @Extbase\Validate("NotEmpty")
*/
protected $myProperty1;
/**
* @Extbase\Validate("Vendor\Extension\Validation\Validator\CustomValidator")
*/
protected $myProperty2;
Or
#[Extbase\Validate(['validator' => \TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator::class])]
protected $myProperty1;
#[Extbase\Validate(['validator' => \Vendor\Extension\Validation\Validator\CustomValidator::class])]
protected $myProperty2;
9. Benutzerdefinierte Fluid Views & Extbase
- \TYPO3\CMS\Fluid\View\StandaloneView, TemplateView, etc. sind veraltet.
- Verwenden Sie stattdessen \TYPO3\CMS\Core\View\ViewFactoryInterface.
10. renderStatic() für Fluid ViewHelpers
- Die Verwendung von renderStatic() in Fluid ViewHelpers ist veraltet. Außerdem werden die Traits \TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithContentArgumentAndRenderStatic und \TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic ebenfalls als veraltet markiert.
// Before v13
class MyViewHelper extends AbstractViewHelper
{
use CompileWithRenderStatic;
public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext): string
{
return $renderChildrenClosure();
}
}
// After v13
class MyViewHelper extends AbstractViewHelper
{
public function render(): string
{
return $this->renderChildren();
}
}
11. Instantiation of IconRegistry in ext_localconf.php
Bisher haben Autoren von Erweiterungen Icons manuell registriert, indem sie \TYPO3\CMS\Core\Imaging\IconRegistry in ihren ext_localconf.php-Dateien instanziierten. Dieser Ansatz ist nun veraltet.
// Before v13
EXT:example/ext_localconf.php
<?php
$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Imaging\IconRegistry::class,);
$iconRegistry->registerIcon(
'example',
\TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
[
'source' => 'EXT:example/Resources/Public/Icons/example.svg'
],
);
// After v13
EXT:example/Configuration/Icons.php
<?php
return [
'example' => [
'provider' => \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
'source' => 'EXT:example/Resources/Public/Icons/example.svg',
],
];
12. INCLUDE_TYPOSCRIPT-Syntax
Die alte TypoScript-Syntax für den Import von externen TypoScript-Dateien mit <NCLUDE_TYPOSCRIPT: ist in TYPO3 v13 veraltet und wird in v14 entfernt werden.
// Before v13
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:my_extension/Configuration/TypoScript/myMenu.typoscript">
// After v13
@import 'EXT:my_extension/Configuration/TypoScript/myMenu.typoscript'
13. Plugin Content Element & SubTypes
- In der offiziellen Dokumentation finden Sie neue Möglichkeiten zur Registrierung von Plugin-basierten Inhaltstypen.
14. Verwerfen von @typo3/backend/wizard.js
Das Modul @typo3/backend/wizard.js, das für einfache Assistenten im Backend verwendet wird, ist veraltet. Es wird durch das funktionsreichere @typo3/backend/multi-step-wizard.js ersetzt, das verbesserte Funktionen für die Erstellung von mehrstufigen Assistenten bietet.
// Before v13
import Wizard from '@typo3/backend/wizard.js';
Wizard.addSlide(
'My-slide-identifier',
'Slide title',
'Content of my slide',
SeverityEnum.notice,
function () {
// callback executed after displaying the slide
}
);
// After
import MultiStepWizard from '@typo3/backend/multi-step-wizard.js';
MultiStepWizard.addSlide(
'my-slide-identifier',
'Slide title',
'Content of my slide',
SeverityEnum.notice,
'My step',
function () {
// callback executed after displaying the slide
}
);
15. Renamed Page Tree Navigation Component ID
- In TYPO3 v13 wurde die ID der Seitenbaum-Navigationskomponente von @typo3/backend/page-tree/page-tree-element in @typo3/backend/tree/page-tree-element umbenannt. Die Verwendung der alten ID löst eine PHP-Deprecation-Warnung aus. Um zu migrieren, aktualisieren Sie die Einstellung navigationComponent in Ihrer Modules.php Konfiguration auf den neuen Namen.
// Before v13
'mymodule' => [
'parent' => 'web',
...
'navigationComponent' => '@typo3/backend/page-tree/page-tree-element',
],
// After v13
'mymodule' => [
'parent' => 'web',
...
'navigationComponent' => '@typo3/backend/tree/page-tree-element',
],
16. Verwerfen Sie GeneralUtility::hmac()
- Die Methode GeneralUtility::hmac() ist in TYPO3 v13 veraltet und wird in v14 entfernt werden. Sie sollte durch die hmac() -Methode von HashService ersetzt werden. Der neue Ansatz verwendet HashService entweder durch Dependency Injection oder durch Instanziierung mit GeneralUtility::makeInstance().
// Before v13
$hmac = GeneralUtility::hmac('some-input', 'some-secret');
// After v13
use TYPO3\CMS\Core\Crypto\HashService;
$hashService = GeneralUtility::makeInstance(HashService::class);$hmac = $hashService->hmac('some-input', 'some-secret');
17. Fluid Variables: true, false, null
In TYPO3 v13 erlaubt Fluid aufgrund der Syntax von Fluid v4 keine benutzerdefinierten Variablen mit den Namen true, false oder null mehr. Die Verwendung dieser Namen führt zu einer Ausnahme, und Fluid v2.15 gibt eine Warnung über die Veralterung aus. Zur Umstellung benennen Sie einfach alle kollidierenden Variablen um.
// Before v13
<f:variable name="true" value="someValue" />
// After v13
<f:variable name="myTrue" value="someValue" />
Suchen Sie einen TYPO3 Upgrade Partner?
Läuft Ihre Website noch auf einer älteren TYPO3 Version? Suchen Sie einen zuverlässigen TYPO3-Upgrade-Partner, um die Funktionalität Ihrer Website zu verbessern? Wir sind führende TYPO3 Experten, die sich auf TYPO3 Upgrade spezialisiert haben. Unsere Dienstleistungen verbessern die Leistung, erhöhen die Sicherheit und stellen die neuesten Funktionen bereit, um sicherzustellen, dass Ihre Website der Konkurrenz einen Schritt voraus bleibt.
Fazit & Tipps
TYPO3 v13 ist ein riesiger Schritt nach vorne: Veraltete Hooks wurden entfernt, moderne Coding-Standards eingeführt und zentrale Abhängigkeiten wie Symfony und Doctrine DBAL aktualisiert. Hier erfahren Sie, wie Sie Ihre Migration effektiv angehen können:
1. Beseitigen Sie grundlegende Änderungen: Aktualisieren Sie den Code für geänderte Methodensignaturen, entfernte Hooks und TCA-Schema-Änderungen.
2. Prüfen Sie wichtige Änderungen: Stellen Sie sicher, dass Ihre Abhängigkeiten, Änderungen der Standardkonfiguration und entfernte DB-Felder kein unerwartetes Verhalten verursachen.
3. Beseitigen Sie Verwerfungen: Machen Sie Ihr Projekt zukunftssicher, indem Sie veraltete Funktionen entfernen oder überarbeiten und so Ihren Code fit für TYPO3 v14 machen.
Empfohlene Schritte
- Upgrade-Assistenten ausführen: Führen Sie im TYPO3-Installationstool alle empfohlenen Assistenten aus.
- Durchsuchen Sie Ihre Codebase: Suchen Sie nach Verweisen auf entfernte Hooks, alte Klassen oder veraltete Konstanten.Testen Sie gründlich: Überprüfen Sie Ihre Front-End- und Back-End-Logik unter v13.
- Bleiben Sie auf dem Laufenden: Achten Sie auf die offiziellen Changelogs, Slack-Kanäle oder die TYPO3 Community, um letzte Klarstellungen oder Migrationen von Einzelfällen zu erfahren.
Wenn Sie diese Punkte jetzt berücksichtigen, wird Ihr Upgrade auf TYPO3 v13 (und später v14) viel reibungsloser verlaufen. Viel Spaß beim Programmieren und genießen Sie die aufregenden neuen Funktionen von TYPO3 v13!
Wenn Sie diesen Leitfaden hilfreich fanden, teilen Sie ihn mit anderen TYPO3 Entwicklern und verbreiten Sie ihn weiter. Lassen Sie uns gemeinsam TYPO3 v13 zur bisher besten Version machen!
Sanjay Chauhan
CTO - T3Planet & NITSANSanjay Chauhan, Mitbegründer von NITSAN (Preisgekrönte TYPO3 Agentur) und Pionier von T3Planet, dem ersten TYPO3 Shop weltweit.
Ein wahrer TYPO3-Fanatiker seit 2010.
Mit meinem umfangreichen technischen Wissen und…
More From Author