Update from 7.6 or lower
04. Mai 2022
04. Mai 2022
If you are upgrading from 7.6 or lower to 10.4 or 11.5, you need to upgrade to 8.x and 9.x first to get all the upgrade wizards you need. But there is an easier way with the ichhabrecht/core-upgrader extension (thanks to Nicole Cordes https://github.com/IchHabRecht/core_upgrader).
This extension will help you upgrade to 10.4 immediately. Unfortunately there is no version for 11.5 yet, so there is one more step needed to go to 11.5.
Here is the way to do it:
composer require ichhabrecht/core-upgrader 1.3.*
vendor/bin/typo3cms install:generatepackagestates
vendor/bin/typo3cms coreupgrader:upgrade
vendor/bin/typo3cms upgrade:run all
composer update
vendor/bin/typo3cms upgrade:prepare
vendor/bin/typo3cms upgrade:run all
vendor/bin/typo3cms cache:flush
When the backend comes back up and the page tree loads, you can proceed with updating your template extension and other extensions. Have a look at Update code with rector. And even more optimisations: Check for PSR-12.
Move the TypoSript code and the backend templates from the backend to your config extension.
If you have any code in ext_tables.php, you will also need to move it to Configuration/TCA/Overrides/[tablename].php. See https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/ConfigurationFiles/Index.html for more information.
In the past, content elements were created using pure TypoScript. With Fluid there is now the lib.contentElement to render in Fluid files. Now we have two options: Rebuild the TypoScript code for each element in fluid, or make the TypoScript work again with some small changes.
Here I will describe the second option:
lib.contentElement {
templateRootPaths {
10 = EXT:zwbisdrei_config/Resources/Private/Plugins/Content/Templates/
}
layoutRootPaths {
10 = EXT:zwbisdrei_config/Resources/Private/Plugins/Content/Layouts/
}
partialRootPaths {
10 = EXT:zwbisdrei_config/Resources/Private/Plugins/Content/Partials/
}
}
<html xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
data-namespace-typo3-fluid="true">
<f:render partial="Header/All" arguments="{_all}" />
</html>
tt_content.textpic.10 < lib.stdheader
tt_content.textpic.20 >
tt_content.textpic.20 = CASE
tt_content.textpic.20.key.field = imageorient
tt_content.textpic.20.18 = COA
tt_content.textpic.20.18 {
# render content element
}
lib.stdheader < lib.contentElement
lib.stdheader.templateName = StdHeader
tt_content.textpic = COA
tt_content.textpic {
10 < lib.stdheader
20 = CASE
20.key.field = imageorient
20.18 = COA
20.18 {
# render content element
}
}
For large systems it may be useful to truncate and remove tables before the update steps. This will reduce the database update time considerably.
vendor/bin/typo3cms cleanup:deletedrecords
After all that effort: Keep your installation clean.
config {
# is now defined in sites config
doctype = html5
doctypeSwitch = 1
metaCharset = UTF-8
linkVars = L
sys_language_mode = content_fallback
sys_language_uid = 0
language = de
locale_all = de_DE.utf8
# old extensions not used anymore
simulateStaticDocuments = 0
tx_realurl_enable = 1
}
Check that installToolPassword exists and is not empty in LocalConfiguration.php.
Change paths from old:layoutRootPath
templateRootPath
partialRootPath
to new:layoutRootPaths.10
templateRootPaths.10
partialRootPaths.10
On very old installations, images such as logo, CSS and JavaScript may not yet be included in the config extension. Move these from /images or /external to Resources/Public/[Css|JavaScript|Images].
If slugs are missing from the page settings, you can use the ig_slugs extension to rebuild them:
composer req internetgalerie/ig-slug
# Fix for error message: Data truncated for column 'media' at row 2 (tt_content)
UPDATE `tt_content` SET media=0 WHERE media IS NULL;
# Fix for error message: Data truncated for column 'image' at row 2 (tt_content)
UPDATE `tt_content` SET image=0 WHERE image IS NULL;
# Fix for error message: Data truncated for column 'media' at row 2 (pages)
UPDATE `pages` SET media=0 WHERE media IS NULL;