mysqldump --opt -h HOST -u USER -p DBNAME > DATEINAME.sql
, um das Passwort bei Aufforderung direkt einzugebenmysql -h 127.0.0.3 -u USER -p DBNAME < DATEINAME.sql
Kopie der TYPO3-Site auf Strato vServer mit Plesk erstellen
Einzelne Tabellen der Datenbank kopieren
Systemvoraussetzungen: PHP 7.2-7.4
php7-73LATEST-CLI typo3/sysext/core/bin/typo3 referenceindex:update
; nur prüfen: -c
anhängen) und Database analyzer ausführen/typo3/install.php
aufrufens. a. https://docs.typo3.org/m/typo3/guide-installation/master/en-us/Upgrade/Index.html
$classLoader = require __DIR__.'/vendor/autoload.php'; // wird zu: $classLoader = require __DIR__.'/typo3_src/vendor/autoload.php';
Der Link zum Einbinden des statischen Templates liegt nicht mehr auf der obersten Ebene in der Datei ext_tables.php
, sondern in
EXT-Folder/Configuration/TCA/Overrides/sys_template.php
. Dementsprechend muss im Code auch der Extension-Key angegeben werden:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'NemaTemplate'); // wird zu: \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('nema_template', 'Configuration/TypoScript', 'NemaTemplate');
settings.detail.disqusShortname
. Wird sie gelöscht, ist alles wieder gut. Eine andere Möglichkeit ist die falsch plazierte Condition {newsItem.mediaPreviews}
.basic.automaticInstallation = false
ist.Wie bei jedem Update starten wir mit einer Kopie (s.o.), überprüfen die Kompatibilität der Extensions, aktualisieren sie so weit wie möglich, aktualisieren den Referenz-Index und führen im Installtool den Database analyzer aus. Anschließend werden die nicht-kompatiblen Extensions deaktiviert.
Anforderung: Mindestens PHP 7.2 Extended - nicht FASTCGI! - Wenn man im Installtool, im Backend und im Frontend nur leere weiße Seiten sieht, kann das der Grund sein.
Configuration Presets auf „Live“ stellen. Sonst verschluckt sich der Upgrade Wizard an den Fehlermeldungen.
Seiten, die nicht in der URL erscheinen sollen, auf „Ordner“ bzw. „Trennzeichen für Menü [199]“ umstellen. Mit RealURL konnte man Seiten aus dem Pfad ausschließen; mit den „Slugs“ in TYPO3 9 geht das nicht mehr bzw. man muss nachträglich per phpMyAdmin das Feld ''slug'' der betroffenen Seiten leeren und die Pfade neu generieren.
Dann wird der Quellcode entpackt und den symbolische Link zum Quellcode geändert (z.B. im Midnight Commander über Menü > File > Edit Symlink).
Im Installtool alle Punkte im Upgrade-Wizard durchgehen, auch die nicht gewünschten Änderungen auswählen, aber nicht ausführen lassen. So weiß der Wizard, dass man diese absichtlich übergangen hat. Anschließend im Database Analyzer die Datenbank anpassen. Dabei Tabellen deaktivierter Extensions nicht ändern. Anschließend den Cache löschen.
Es lohnt sich auch, einen Blick in den Directory Status unter Umgebung zu werfen.
… ersetzt sozusagen RealURL und baseURL.
Im Reiter Allgemein:
Im Reiter Sprachen, am Beispiel einer deutschen Seite:
Die Konfiguration der Sprachen im config.ts (sys_language_mode etc.) wird dadurch überflüssig.
Im Reiter Fehlerbehandlung kann z.B. eine eigene 404-Seite mit dem Fehlercode verknüpft werden.
Die Konfiguration wird in typo3conf/sites/
gespeichert. Für die Extension News muss sie anschließend in einem Editor von Hand erweitert werde. Siehe auch routeEnhancers.
Leere Typoscript-Objekte führen zu einem Fehler. Abhilfe: Folgenden Code einfügen, wo das leere Objekt ausgegeben wird.
lib.searchfield = TEXT lib.searchfield.value >
Auch wenn im Fluid-Template Typoscript-Objekte aufgerufen werden, die es nicht gibt oder zu denen der Pfad nicht stimmt, werden die Templates nicht gerendert.
Auch wenn ein cObject in einem auskommentierten Teil des Templates steht, scheint TYPO3 9 zu versuchen, dieses zu rendern. Fehlt es im Setup, wird im Frontend nur eine leere Seite mit dem allseits beliebten „Oops, an error occurred“ ausgegeben.
<!-- div> <f:cObject typoscriptObjectPath="lib.notfoundcode"/> </div-->
Bei manchen Updates muss hier schon die Datei wie unter indexphp beschrieben angepasst werden.
Redakteure müssen Zugriff auf das URL-Segment haben, sonst bleibt das Feld leer, wenn der Redakteur eine neue Seite anlegt.
Zugriffsliste → Erlaubte Ausschlussfelder → Seite → URL-Segment (slug)
Das gilt natürlich auch für Extensions, also z.B. bei [news]:
Zugriffsliste → Erlaubte Ausschlussfelder → Artikel → Sprechende URL Pfadabschnitt (path_segment)
TypoScript Conditions mit der Symfony Expression Language, vgl. Typoscript Reference, TypoScript Conditions mit der Symfony Expression Language, Vorher/Nachher und TypoScript-Condition Cheatsheet
Eine bestimmte Seite: [globalVar = TSFE:id = 123]
→ [ page["uid"] == 123 ]
Eine bestimmte Seite und ihre Unterseiten: [PIDinRootline = 123]
→ [ 123 in tree.rootLineIds ]
Seite auf einer bestimmten Ebene: [treeLevel = 0]
→ [tree.level == 0]
Login eines beliebigen Benutzers: [loginUser = *]
→ [ loginUser('*') ]
Eine Seite im Bereich 10-20: [ page["uid"] in 10..20 ]
Beispiel:
[globalVar = TSFE:id = 1] || [globalVar = TSFE:id = 2] # ... [global]
wird zu
[ page["uid"] == 1 || page["uid"] == 2 ] # ... [END]
Mit TYPO3 9.4 entfällt der L-Parameter, daher wird die Site-Configuration abgefragt: Aus
[globalVar = GP:L = 1]
wird
[siteLanguage("languageId") == "1"] // oder auch [siteLanguage("title") == "Deutsch"]
Beispiel: Sprache im page.typoscript
abfragen und im HTML-Tag anpassen:
page.config.htmlTag_setParams = class="no-js" lang="de" [globalVar = GP:L = 1] page.config.htmlTag_setParams = class="no-js" lang="en" [global]
wird zu
page.config.htmlTag_setParams = class="no-js" lang="de" [siteLanguage("languageId") == "1"] page.config.htmlTag_setParams = class="no-js" lang="en" [END]
Die Dateiendungen für TypoScript und TSconfig werden vereinheitlicht:
TypoScript .ts
→ .typoscript
TSconfig .txt
→ .tsconfig
Entsprechend muss der Pfad zu den inkludierten Dateien in der ext_localconf.php und im Setup angepasst werden.
Auch hier ist die Syntax einfacher geworden:
@import "EXT:nema_template/Configuration/TypoScript/*.typoscript"
… geht eigentlich genauso wie das Update von 6.2 auf 7.6. Allerdings ist die System-Extension Form komplett neu. Und für veraltete Templates sind manuelle Anpassungen notwendig.
SELECT * FROM `tx_news_domain_model_news` WHERE `bodytext` LIKE '%<link%'
überprüfen. Was übrig bleibt, sind tote Links.In TYPO3 8 können Extensions einfach deaktiviert werden, indem man den entsprechenden Eintrag in der PackageStates.php löscht.
Alte Formulare funktionieren nicht mehr. (Außer man installiert das entsprechende Kompatibilitäts-Paket …)
Offizielle Dokumentation: https://docs.typo3.org/typo3cms/extensions/form/8.7/Index.html Speicherort für Formulare: Tutorial bei jweiland.net
Die neue Systemerweiterung ist leider noch etwas buggy. Hat man z.B. eine einsprachige Seite, aber nicht in Englisch, werden die von Hand eingetragenen „submitButtonLabel“ nicht gerendert. Abhilfe schafft es, die Übersetzung im Setup des Templates zu deaktivieren:
plugin.tx_form._LOCAL_LANG.de.element.Form { renderingOptions.submitButtonLabel = }
Die Klasse .csc-default
gibt es nicht mehr. Sie muss im CSS entfernt oder z.B. durch .csc-frame
ersetzt werden.
imageColumnStdWrap
muss durch imageStdWrap
ersetzt werden.
„Text und Bilder“ etc.: Die Einstellung „Abstand vor/nach“ im Erscheinungsbild von Content-Elementen hat sich ebenfalls geändert und muss nun im CSS definiert werden, z.B.:
.csc-space-before-medium { margin-top:30px; } .csc-space-before-large { margin-top:60px; } .csc-space-before-extra-large { margin-top:100px; }
Der Extension automaketemplate stehen nicht mehr die voreingestellten CONTENT objects styles.content.getLeft
, styles.content.getRight
and styles.content.getBorder
zur Verfügung. Abhilfe per Typoscript im Setup des Root-Templates:
styles.content { # get content, left getLeft < styles.content.get getLeft.select.where = colPos=1 # get content, right getRight < styles.content.get getRight.select.where = colPos=2 # get content, border getBorder < styles.content.get getBorder.select.where = colPos=3 }
Auf Webspace bei jweiland (s. auch dort die Videoanleitung und TYPO3-Wiki):
tar xzf DATEINAME
(z.B. typo3_src-4.2.6.tar.gz
)typo3_src
ändern mit Strg+x+s oder rm typo3_src ln -s ../typo3_src-N.N.NN typo3_src
DOMAIN/typo3/install/index.php
aufrufen. Falls es eine Fehlermeldung bzgl. der SymLinks gibt („Calculated absolute path to tslib directory does not exist.“), muss man das PHP von FastCGI auf /typo3cms/system/backup
wechseln und dort die Datei daily
bearbeitenDer Code für das Input-Feld „Passwort“ hat sich geändert:
<input type="password" id="pass" name="pass" value="" data-rsa-encryption="" />
Die Suche funktioniert wieder, wenn man das eigene Template auskommentiert? Dann versteckt sich darin vielleicht ein kleiner Syntax- oder Zeilenumbruchfehler …
Der TYPO3 core class “tslib_pibase” Pagebrowser scheint sich verändert zu haben.
Damit die Trefferliste richtig angezeigt wird, muss man die lokale Sprache der Extension konfigurieren:
plugin.tt_news { _LOCAL_LANG.de { pi_list_browseresults_displays = Treffer ###FROM### bis ###TO### von ###OUT_OF### } }
Man kann auch den internen Pagebrowser verwenden:
usePiBasePagebrowser = 0
Verschiedene Einstellungen wie dontLinkActivePage greifen dort aber nicht.
Die Video-Anleitung von jweiland ist ein guter Einstieg. Die Checkliste unten ist eine leicht erweiterte Zusammenfassung dieser Anleitung.
typo3temp
leerenPHP_SCRIPT
“ oder „HTML
“ enthalten, müssen diese durch TEXT
ersetzt werdentar xzf typo3_src-6.2.x
, rm typo3_src ln -s ../typo3_src-6.2.10 typo3_src
[SYS][curlUse]
auf 1 setzten. Sonst keine Verbindung zum TER möglich.Grund hierfür ist in der Regel eine Extension:
config.no_cache = 0
und plugin.tx_indexedsearch.result_link_target = [ID der Suchergebnisseite]
setzenAnschließend können die Extension-Ordner gelöscht werden.
Unter „HILFE → Module“ werden Hinweise auf Probleme mit der Installation angezeigt (s.a. System → Berichte → Statusberichte). Es lohnt sich, dieses Modul nach dem update aufzurufen.
Gängige Probleme:
Es sollte immer zuerst ein Update auf Typo3 4.5 erfolgen. Da 4.5 die vorhergehende LTS (Long Time Support) Version ist/war, ist die Aktualisierung von dieser Version relativ unproblematisch. Zu beachten: Es ist oftmals nicht möglich oder zumindest nicht sinnvoll, bei jedem dieser vorhergehenden Update-Schritte die installierten Extensions jeweils zu aktualisieren, da die entsprechenden Versionen nicht (mehr) im TER existieren. Sofern man an einer Kopie der Seite arbeitet, kann man getrost die Extensions erst beim Update auf die Version 6.2 berücksichtigen.
Das Kontextmenü hat sich verändert. Damit es in der neuen Version sichtbar ist, muss man in der localconf.php die Zeilen
$TYPO3_CONF_VARS["BE"]["defaultUserTSconfig"]=" "; $TYPO3_CONF_VARS["BE"]["defaultPageTSconfig"]=" TCEFORM.pages.TSconfig.linkTitleToSelf=1 ";
auskommentieren und die temp_CACHED_
-Dateien löschen.
Die „Translation Settings“ gehen auch regelmäßig verloren und müssen neu gespeichert werden.
Duplicate entry '0' for key 'PRIMARY'
Lösung: Beim Database Compare im Install-Tool TRUNCATE TABLE `cache_hash` auswählen.
Fatal error: Call to undefined method t3lib_tsfeBeUserAuth::extInitFeAdmin() in ...
Lösung: Die index.php aus dem neuen TYPO3-Source Code in das Projektverzeichnis kopieren.