Upgrade von TYPO3 8 LTS auf 9 LTS
Am Beispiel unseres Musterprojekts zeigen wir, wie ein Upgrade auf TYPO3 9 LTS durchgeführt werden kann.
Da TYPO3 9 LTS viele neue Features mit bringt, ist ein Upgrade nicht ganz so trivial, wie man vielleicht im ersten Moment meinen könnte. Denn manche Dinge, vom TypoScript bis hinzu lesbaren, "sprechenden" URLs, sollten für die neuen Funktionen von TYPO3 9 angepasst werden.
Am Beispiel unseres Musterprojekts für TYPO3 8 LTS zeigen wir, wie ein Upgrade auf TYPO3 9 LTS durchgeführt werden könnte.
Aber ein Hinweis: dies kann keine allgemeingültige Anleitung für ein Upgrade sein. Je nach installierten Extensions und individuellem TypoScript oder TSConfig können noch ganz andere Schritte notwendig sein, um ein Upgrade erfolgreich durchzuführen.
Die Anleitung ist nicht unbedingt für Einsteiger geeignet und richtet sich eher an Anwender, die schon TYPO3-Erfahrung haben.
Upgrade vorbereiten
Im Video wird erklärt, wie man bei großen Webseiten den Referenzindex von TYPO3über die Shell aktualisieren kann.
In unserem Cloud Hosting sind dafür andere Verzeichnisangaben erforderlich:
/opt/alt/php74/usr/bin/php httpdocs/typo3cms/.....
Bei Bedarf muss die PHP Version entsprechend angepasst werden.
Folgende Arbeiten sollten vor dem Upgrade durchgeführt werden:
- Eine Kopie der Installation anlegen. Niemals ein Uprade an der Live-Website durchführen!
- Überprüfen, ob alle genutzten Extensions für TYPO3 9 zur Verfügung stehen
- Gegebenenfalls inkompatible Extensions deaktvieren
- Alle aktiven Extensions auf den neuesten mit TYPO3 8 kompatiblen Stand bringen
- Im Installtool ein "Database Compare" durchführen
- Den Referenz-Index aktualisieren
Das Upgrade durchführen
- Bei nicht-Composer Installationen den Symlink auf den neuen TYPO3-Kern anpassen
- In den Domaineinstellungen im Kundenmenü ggf. auf PHP 7.2 EXTENDED umschalten
- Das Installtool aufrufen
- Alle Punkte im Upgrade-Wizard durchgehen
- Den Database Analyzer starten und ggf. Anpassungen an der Datenbank durchführen lassen.
- Alles Caches löschen
Obwohl das bei unserem Musterprojekt nicht nötig ist: eventuell müsste bei anderen Installationen die index.php im Document Root ersetzt werden.
Folgender Code könnte dann in der index.php verwendet werden:
<?php
require __DIR__ . '/typo3_src/index.php';
Extensions aktualisieren
Alle aktiven Extensions sollten jetzt auf den neuesten mit TYPO3 9 kompatiblen Stand aktualisiert werden.
Dabei unbedingt die Dokumentationen der Extensions lesen!
Oft stehen hier wichtige Hinweise zum Update. Eventuell ändern sich Templates oder TypoScript-Anweisungen. Manche Extensions bringen auch ein Update-Skript im Extensionmanager oder einen Upgrade-Wizard im Installtool mit, um nach dem Update notwendige Änderungen durchführen zu lassen.
Site Configuration
TYPO3 9 LTS bringt ein neues Backend-Modul zur Site Configuration mit. Hier müssen die verwendeten Sprachen definiert werden. Außerdem kann hier z.B. auch die 404-Fehlerbehandlung konfiguriert werden.
URL-Routing anpassen
Standardmäßig generiert TYPO3 9 LTS URLs ohne die Endung .html.
Sofern aber vor dem Upgrade URLs mit .html verwendet wurden, kann es sinnvoll sein, das auch in TYPO3 9 anzupassen. Schließlich sind die "alten" URLs auch schon im Index diverser Suchmaschinen verzeichnet.
Mit folgender Beispielkonfiguration werden die URLs alle mit .html generiert. Außerdem ist eine Anpassung für die Extension "news" mit dabei, damit auch für News-Artikel lesbare URLs erzeugt werden.
Zusätzlich wird dafür gesorgt, dass der Aufruf von "sitemap.xml" die neue XML-Sitemap der System-Extension "SEO" anzeigt. Dafür muss das entsprechende statische TypoScript-Template eingebunden sein.
routeEnhancers:
NewsPlugin:
type: Extbase
extension: News
plugin: Pi1
routes:
-
routePath: '/{news_title}'
_controller: 'News::detail'
_arguments:
news_title: news
defaultController: 'News::detail'
aspects:
news_title:
type: PersistedAliasMapper
tableName: tx_news_domain_model_news
routeFieldName: path_segment
PageTypeSuffix:
type: PageType
default: .html
map:
'sitemap.xml': 1533906435
Korrekturen in den Templates der news-Extension
Da wir im Musterprojekt ein angepasstes Template für die Darstellung der News auf der Startseite verwenden, muss in diesem Template eine kleine Anpassung vorgenommen werden.
Da sich beim switch-case-Viewhelper die Schreibweise des "default case" geändert hat, muss das entsprechend angepasst werden.
Neue Syntax für TypoScript Conditions
TypoScript Conditions basieren jetzt auf der Symfony Expression Language.
Zwar können in TYPO3 9 auch noch die alten Conditions verwendet werden, aber mit TYPO3 10 werden diese nicht mehr funktionieren und man sollte frühzeitig die neue Syntax verwenden.
Hinweis zur indexed_search
im Musterprojekt nutzen wir die System-Extension indexed_search. Auf der Suchergebnisseite wird das Suchfeld, dass sich im Kopfbereich der Seite befindet, dort ausgeblendet, weil es durch das Plugin ja im normalen Inhaltsbereich angezeigt wird.
Damit das auch in TYPO3 9 funktioniert, ist eine kleine Änderung im TypoScript notwendig. Im Video sind diese Schritte ungefähr ab Minute 9:20 zu sehen:
- Öffnen Sie die Datei typo3conf/ext/jwmusterprojekt8/Configuration/TypoScript/Setup/lib.search.ts
- Suchen Sie die Zeile
lib.search > - Ändern/Ergänzen Sie die Zeile wie folgt:
lib.search >
lib.search = TEXT
lib.search.value >
Notwendig ist diese Anpassung durch eine Änderung im TYPO3-Kern, das Problem wurde auch bereits gemeldet: https://forge.typo3.org/issues/87513
Neue Dateiendungen für TypoScript und TSconfig Dateien
Die Dateiendungen für TypoScript und TSconfig wurden standardisiert und sollten angepasst werden.
TypoScript -> .typoscript
TSconfig -> .tsconfig
Das ist auch relevant, wenn man manuell Dateien aus System-Extensions inkludiert.
Außerdem wurde die Syntax zum einbinden von TypoScript-Dateien sehr vereinfacht.
cs_seo vs. seo
TYPO3 9 bringt eine eigene SEO-Extension mit. Viele Funktionen, die man bisher mit Drittextensions nachrüsten musste, gehören jetzt zum Standardumfang.
Im Musterprojekt 8 hatten wir die Extension cs_seo mitgeliefert. Die meisten Funktionen werden jetzt von der neuen System-Extension abgedeckt. In diesem Video zeigen wir die Unterschiede zwischen beiden Extensions. Ob eine zusätzliche Extension wie cs_seo oder yoast_seo nötig ist, ist abhängig vom Anwendungsfall und sollte pro Projekt entschieden werden.
Rechte der Backend-Benutzergruppen anpassen
Sofern auch Backend-Benutzer mit eingeschränkten Rechten (Redakteure) im System arbeiten, müssen ggf. die Rechte dieser Benutzergruppen angepasst werden.
Zum Beispiel sind für die neue SEO-Extension ein paar Anpassungen notwendig, sofern die neuen Funktionen auch von Redakteuren genutzt werden sollen.
Außerdem müssen Redakteure zwingend Zugriff auf das Feld "slug" haben. Ansonsten bleibt dieses Feld leer, wenn der Redakteur eine neue Seite anlegt. Diese wird dann natürlich auch nicht gefunden.
Sprachpakete aktualisieren
Die Sprachpakete für das System und Extensions sollten nach einem Upgrade aktualisiert werden.
Dieses Modul wurde in TYPO3 9 verschoben und findet sich jetzt in den neuen "Admin Tools" im Bereich "Maintenance".
Aufräumen
Wenn nach dem Upgrade alles funktioniert, sollte man das System noch ein wenig aufräumen. Dazu gehört zum Beispiel
- Ungenutzte Extensions löschen
- Nochmal ein Database Compare durchführen
- In den "Configuration Presets" in den Live-Modus schalten
Wenn zum Abschluss die neue Version unter einer anderen Domain live geschaltet werden soll, muss unbedingt in der Site Configuration der "Entry Point" angepasst werden!