TYPO3 Upgrade von Version 7 LTS auf Version 8 LTS
CSS Styled Content
Es gibt für TYPO3 8 eine deprecicated Version CSS Styled Content. Diese brauchen wir für alten Seiten um das CSS nicht anfassen zu müssen. Wichtig ist das man im Template bei „Include static (from extensions)“, beide css_styled_content inkludiert, auch (optional)
Probleme mit explicitADmode
Im LocalConfiguration.php immer explicitAllow setzen, da dies über Gruppen kummlierte Content-Typen rechte erlaubt. Auch ist allow besser, da wenn durch Updates neue Content-Typen hinzukommen, diese nicht automtisch den Usern erlaubt sind. Alte Instanzen von uns sind aber auf Deny, darum immer Usergruppe testen.
$GLOBALS['TYPO3_CONF_VARS']['BE']['explicitADmode'] = explicitAllow
Auf der Datenbank abfragen, welche Content-Typen benutzt werden:
SELECT cType, count(*) FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY cType
cType | count(*) |
html | 41 |
image | 341 |
list (plug-in) | 3 |
mailform | 1 |
shortcut (insert record) | 9 |
text | 279 |
Mit pids:
SELECT cType, count(*), GROUP_CONCAT(pid SEPARATOR ', ') FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY cType
Mit colPos:
SELECT cType, colPos, count(*), GROUP_CONCAT(pid SEPARATOR ', ') FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY cType, colPos
Fluid Styled Content
Es gibt eine sehr mühsammen Bug im 8.7.1 LTS, heisst ein Fluid Layout „Default„, so bleibt die Seite ohne Error einfach leer. Wir haben es zu Standard.html umbennent.
page.includeJSlibs -> page.includeJSLibs
schon im TYPO3 7 nicht mehr gültig, aber noch valid, geht includeJSlibs mit Kleinbuschtaben nicht mehr, es muss includeJSLibs heissen
https://forge.typo3.org/issues/79760#change-330903
Bekannte Probleme
Die Extension DCE geht in TYPO3 8 nur mit dem alten RTE:
https://forge.typo3.org/issues/81167
Upgrade Wizard
Einfach durchklicken
Dannach bei Important actions > Database analyzer > Compare current database with specification
Configuration presets
Hier würde ich, wenn immer Möglich, die Voreinstellungen nutzen. Nach dem Upgrade, werden diese nicht mehr erkannt, auch wenn man sie im TYPO3 7 gesetzt hat. Unter „Debug settings“ würde ich „Debug“ setzen.
RTE config
Ich habe für die User einen eingeschränkten RTE. In LocalConfiguration.php ist der Pfad angegeben:
1 2 3 4 5 |
'RTE' => [ 'Presets' => [ 'custom' => 'fileadmin/Resources/Private/RTE/Custom.yaml', ], ], |
um diese Konfiguration zu aktivieren, nutze ich in der Page TSconfig:
1 2 3 4 5 6 7 8 9 10 |
####################################################################### // +------------------------------------------------------------------ // | RTE und PERMISSIONS // +------------------------------------------------------------------ # RTE.default.preset = full RTE.default.preset = custom # RTE.config.tt_content.bodytext.preset = custom |
andWhere in select nicht mehr gültig
andWhere in Typoscript funktoniert nicht mehr, muss auf where geändert werden:
grep andWhere *
Umbennente Felder im tt_content
section_frame -> frame_class
Bei der Migration wird das alte Feld ’section_frame‘ nach ‚frame_class‘ migriert. Waren es bei section_frame noch Integer (Standardwert war 0), ist es bei frame_class nun ein String. (Standardwert ist „default“.) Dabei werden Daten also umgeschrieben. Beim Updaten werden 0 -> default gemappt
Mehr Information dazu: #79622 – Section Frame for CSS Styled Content replaced with Frame Class
Alt:
1 2 3 4 5 6 7 8 9 |
# ## umbenennen der eintraege "frame" von innaltselement TCEFORM.tt_content.section_frame.label = Textdarstellung: TCEFORM.tt_content.section_frame { altLabels { 0 = mit Akkordion 1 = kein Akkordion } removeItems = 5,6,10, 11,12,20,21,66 } |
Neu:
1 2 3 4 5 6 7 8 9 10 11 12 |
# ## umbenennen der eintraege "frame" von innaltselement TCEFORM.tt_content.frame_class.label = Textdarstellung: TCEFORM.tt_content.frame_class { addItems{ custom-1 = kein Akkordion } altLabels { default = mit Akkordion } //removeItems = default,ruler-before,ruler-after,indent,indent-left,indent-right,none removeItems = ruler-before,ruler-after,indent,indent-left,indent-right,none } |
vorhandene frame_class Werte abfragen:
SELECT frame_class, count(*) FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY frame_class
Anpassungen im Setup:
Alt:
1 2 3 4 5 6 7 8 9 10 |
tt_content.stdWrap.innerWrap.cObject { 1.20.10.value = csc-default {field:CType}-cont narrow column 5.20.10.value = csc-default {field:CType}-cont nocolumn 6.20.10.value = csc-default {field:CType}-cont narrow column clearleft 10.20.10.value = csc-default {field:CType}-cont column blend 11.20.10.value = csc-default {field:CType}-cont broad column default.20.10.value = csc-default {field:CType}-cont column default.20.10.insertData = 1 } |
Neu
1 2 3 4 5 6 7 8 9 10 11 |
tt_content.stdWrap.innerWrap.cObject { custom-1.20.10.value = csc-frame {field:CType}-cont narrow column ruler-before.20.10.value = csc-frame {field:CType}-cont nocolumn ruler-after.20.10.value = csc-frame {field:CType}-cont narrow column clearleft indent.20.10.value = csc-frame {field:CType}-cont column blend indent-left.20.10.value = csc-frame {field:CType}-cont broad column default.20.10.value = csc-frame {field:CType}-cont column default.20.10.insertData = 1 } |
spaceBefore -> space_before_class
Anschauen welche welche Werte mit welcher Häufigkeit es wirklich in der Datenbank gibt:
1 |
SELECT spaceBefore, count(*) FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY spaceBefore |
Anpassungen auf der Datenbank:
1 2 3 4 5 |
UPDATE tt_content set space_before_class = 'top' WHERE spaceBefore = 0; UPDATE tt_content set space_before_class = 'topmid' WHERE spaceBefore = 1; UPDATE tt_content set space_before_class = 'mid' WHERE spaceBefore = 2; UPDATE tt_content set space_before_class = 'midbot' WHERE spaceBefore = 3; UPDATE tt_content set space_before_class = 'bot' WHERE spaceBefore = 4; |
Kontrolle nach dem Updaten:
1 |
SELECT space_before_class, count(*) FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY space_before_class |
Anpassungen fürs Typoscript:
1 |
sed -i 's/spaceBefore/space_before_class/g' *.ts |
1 2 3 |
sed -i 's/spaceBefore/space_before_class/g' *.ts sed -i 's/spaceAfter/space_after_class/g' *.ts sed -i 's/section_frame/frame_class/g' *.ts |
1 2 3 4 5 |
UPDATE tt_content set space_after_class = 'left' WHERE spaceAfter = 0; UPDATE tt_content set space_after_class = 'leftmid' WHERE spaceAfter = 1; UPDATE tt_content set space_after_class = 'mid' WHERE spaceAfter = 2; UPDATE tt_content set space_after_class = 'midright' WHERE spaceAfter = 3; UPDATE tt_content set space_after_class = 'right' WHERE spaceAfter = 4; |
siehe entsprechenes Changelog auf docs.typo3.org.
css Anpassungen für css_styled_content if used
1 2 |
sed -i 's/.csc-default/.csc-frame-default/' screen.css sed -i 's/.csc-uploads/.ce-uploads/' screen.css |
Beim Inhalttype „File Links“ waren früher die Beschreibung automatsich eingeblendet, neu ist das nicht mehr so. Darum muss man das setzen bei bestehenden Einträgen.
1 |
UPDATE `tt_content` SET `uploads_description` = '1' WHERE `tt_content`.`pid` = 40 and CType = 'uploads'; |
section_frame -> frame_class migration
Was für Werte gibt es:
1 |
SELECT DISTINCT(frame_class ) FROM `tt_content`; |
Zuerst ein Backup Feld machen:
1 2 |
ALTER TABLE `tt_content` ADD `frame_class_migration` VARCHAR(60) NOT NULL AFTER `frame_class`; UPDATE tt_content set frame_class_migration = frame_class; |
Meine keys von dem Projekt umschreiben auf der Datenbank:
1 2 3 4 |
UPDATE tt_content set frame_class = 'imgtitle' WHERE frame_class_migration = 'custom-1'; UPDATE tt_content set frame_class = 'titleimg' WHERE frame_class_migration = 'ruler-before'; UPDATE tt_content set frame_class = 'img' WHERE frame_class_migration = 'ruler-after'; UPDATE tt_content set frame_class = 'text' WHERE frame_class_migration = 'indent'; |
TCA overwrite in eigener Extension:
Configuration/TCA/Overrides/tt_content.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$GLOBALS['TCA']['tt_content']['columns']['frame_class'] = Array( 'exclude' => true, 'label' => 'Verhalten', 'config' => [ 'type' => 'select', 'renderType' => 'selectSingle', 'items' => [ ['Bild/Titel optional Bildunterschrift', 'imgtitle'], // custom-1 -> imgtitle csc-img -> csc-default csc-frame-imgtitle csc-img ['Titel/Bild', 'titleimg'], // ruler-before -> titleimg -> csc-default csc-frame-titleimg csc-img ['nur Bild', 'img'], // ruler-after -> img -> csc-default csc-frame-img csc-img ['nur Text', 'text'], // 10 -> indent -> text -> csc-default csc-frame-text ], 'default' => 'imgtitle' ] ); |
Typoscript dazu:
1 2 3 4 5 6 7 8 9 |
tt_content.stdWrap.innerWrap.cObject.key.field = frame_class tt_content.stdWrap.innerWrap.cObject.imgtitle =< tt_content.stdWrap.innerWrap.cObject.default tt_content.stdWrap.innerWrap.cObject.imgtitle.20.10.value = csc-default csc-frame-imgtitle csc-img tt_content.stdWrap.innerWrap.cObject.titleimg =< tt_content.stdWrap.innerWrap.cObject.default tt_content.stdWrap.innerWrap.cObject.titleimg.20.10.value = csc-default csc-frame-titleimg csc-img tt_content.stdWrap.innerWrap.cObject.img =< tt_content.stdWrap.innerWrap.cObject.default tt_content.stdWrap.innerWrap.cObject.img.20.10.value = csc-default csc-frame-img csc-img tt_content.stdWrap.innerWrap.cObject.text =< tt_content.stdWrap.innerWrap.cObject.default tt_content.stdWrap.innerWrap.cObject.text.20.10.value = csc-default csc-frame-text |
tt_news zu news
Wenn man auf TYPO3 V8 ist, dann
- Installiere Extension tt_news importer (news_ttnewsimport)
- installiere Extension news
- Bei der Extension Konfiguration im Extensionmanager muss man unter dem Reiter „Import Modul“ „Show importer“ aktivieren.
- Im Backend unter „News Importer“ zuerst die Kategorien und dann die Inhalte migrieren
- Updaten wie folgt, über command line interface (cli):
1./typo3/cli_dispatch.phpsh extbase ttnewspluginmigrate:run
Quellen:
https://github.com/ext-news/news_ttnewsimport
https://docs.typo3.org/typo3cms/extensions/news/AdministratorManual/Migration/MigrationFromTtNews/Index.html
RTE config für news in Page TS, der Key ist der Name der Datenbank-Tabelle:
1 |
RTE.config.tx_news_domain_model_news.bodytext.preset = minimal |
Abfrage für die eingesetzen Bildorientierung (imageorient)
1 |
SELECT imageorient, count(*) FROM tt_content WHERE deleted = 0 AND hidden = 0 GROUP BY imageorient |
Ein Beispielresultat:
imageorient | count(*) |
0 | 574 |
1 | 1 |
2 | 2 |
8 | 3 |
17 | 197 |
18 | 15 |
Sitememap.xml mit Typoscript:
https://gist.github.com/fabtho/837c4424da9d5ce28ae609173426d46f
Oops, an error occurred
Frontende error sehen, wenn Oops, an error occurred! Code: 20190401111949c2a3859 auftaucht
Im Typoscript Setup hinzufügen:
1 |
config.contentObjectExceptionHandler = 0 |
Text setzen im /typo3 Login
Vorhandener Eintrag ändern:
1 2 |
UPDATE `sys_news` SET `crdate` = '1546300800' WHERE `sys_news`.`uid` = 1; UPDATE `sys_news` SET `content` = '<p>Diese TYPO3-Installation wird betreut durch die Taywa GmbH https://www.taywa.ch</p>\n<p>Kontakt: info@taywa.ch, 043 205 29 40, https://www.taywa.ch/taywa/kontakt/</p>' WHERE `sys_news`.`uid` = 1; |
Neuer Eintrag machen:
1 2 |
INSERT INTO `sys_news` (`uid`, `pid`, `tstamp`, `crdate`, `cruser_id`, `deleted`, `hidden`, `starttime`, `endtime`, `title`, `content`) VALUES (1, 0, 1558437445, 1546300800, 1, 0, 0, 0, 0, 'Support', '<p>Diese TYPO3-Installation wird betreut durch die Taywa GmbH https://www.taywa.ch</p>\n<p>Kontakt: info@taywa.ch, 043 205 29 40, https://www.taywa.ch/taywa/kontakt/</p>'); |
Upgrade Analysis
8.6 LTS
Änderungen im Rendgering von CSS Styled content
image_compression betroffen vielleicht beim Projekt teatimeforaunivierse.com
#79622 – CSS Styled Content and TypoScript
79622 – CSS Styled Content table content element adjustments
Feld section_frame in tt_content wurde nach frame_class unbenannt:
#79622 – Section Frame for CSS Styled Content replaced with Frame Class
8.5 LTS
Neuer Befehl um verweiste Inhalt zu löschen:
./typo3/sysext/core/bin/typo3 cleanup:orphanrecords
#78520 – Lowlevel Orphan Records Cleaning parameters changed
8.4 LTS
Indexed Search mit Volltext braucht vielleicht anpassung
#77700 – Extension indexed_search_mysql merged into indexed_search
8.3 LTS
Neuer Befehl für das Auflisten des Syslog DB-Inhalt über CLI
/typo3/sysext/core/bin/typo3 syslog:list
Breaking: #76891 – syslog lowlevel command
8.1 LTS
Installation mit Proxys muss die Configuration angepasste werden:
#70056 – Http-related options and HttpRequest class remove
Installationen die im CSS ce-bodytext nutzen:
#75237 – Removal of div ce-bodytext might cause layout issues
outIssues.rst
Ich muss mich sehr bedanken. Der Beitrag hat mir gerade sehr sehr viel Zeit gespart. Einfach klasse.
Kommentar by Mathias — 12. September 2019 @ 09:28
[…] Noch älter? Dann shilft vielleicht dies: Migration von v7 auf v8 […]
Pingback by TYPO3 Upgrade von Version 8 LTS auf Version 9 LTS — 3. Mai 2022 @ 08:47