
On October 2, 2018, TYPO3 version 9 LTS with the version number 9.5.0 was released. On this page, we provide information about the new features and changes compared to previous versions.
Current: in versions 9.5.0 and 9.5.1 there are still a number of bugs that cause problems in some installations. We hope that these will be fixed with the release of version 9.5.2, so that we can recommend TYPO3 9.5 for productive use without any restrictions.
TYPO3 Version 9 Roadmap
Roadmap
Version | Focus of development | Release date |
---|---|---|
9.0 | Multilingualism, refactoring install tool and page tree | 12. Dec.2017 |
9.1 | Redirect Handling | 30. Jan. 2018 |
9.2 | Site Handling | 10. Apr. 2018 |
9.3 | SEO and preparations for URL routing for pages (replacement for RealURL) | 12. Jun 2018 |
9.4 | URL routing for pages and SEO improvements | 04. Sep. 2018 |
9.5 | Release of version 9 LTS | 02. Oct. 2018 |
Version 9.5.0 (LTS release, 02.10.2018)
Static Routes
The site configuration module now has options to add static routes for each website.
Example 1: In an installation with multiple websites (multidomain), you want to have different robots.txt files for each site, which should be accessible via /robots.txt for each domain. You can now add a static route "robots.txt" to your website and define which content should be delivered.
Example 2: The TYPO3 SEO extension offers a sitemap for TYPO3 out of the box, but is only accessible for a specific page type.
To make access easier, you can now configure a static route "sitemap.xml" that is mapped to this page type.
Routes can be configured as top-level files (as in the case of "sitemap.xml" and "robots.txt"), but can also lead to deeper levels (e.g. "my/deep/path/to/a/static/text").
Evaluate site configuration via TypoScript
The parameters of the site configuration can be read out using TypoScript getText.
Example:
page.10 = TEXT
page.10.data = site:base
page.10.wrap = This is your base URL: |
User-defined values can also be created in config.yaml of the site configuration. This allows you to save any values per site and use them in the TypoScript.
Route Enhancers and Aspects
TYPO3 9 can generate readable and search engine friendly URLs out-of-the-box without additional extensions. This now also works for extensions such as news or other Extbase extensions.
Since the documentation for this feature is very extensive, we refer to the official documentation here.
Variants for the entry point of a website
The entry point of a website roughly corresponds to what the domain record in the backend used to be. The variants can be used to react to different parameters.
Example: the live site uses the domain domain.de, but the test/staging domain uses staging.domain.de.
Here you can then "activate" the appropriate variant via the application context, for example.(Documentation)
Automatically generated canonical tag
If the new system extension "seo" is active, a canonical tag is automatically generated in the HTML source code.
If required, the URL can be overwritten manually for each language in the page properties.
Attention: when using other SEO extensions that also generate a canonical tag, you should ensure that the tag is only generated once in the source code.
Supplied .htaccess/web.config files in another directory
TYPO3 provides ready-made configuration files for the web servers Apache (_.htaccess) and IIS (_web.confg), which are automatically generated during installation.
However, if you need these templates anyway, you can now find them in other directories:
- typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-htaccess (Apache)
- typo3/sysext/install/Resources/Private/FolderStructureTemplateFiles/root-web-config (IIS)
utf8mb4 as standard for new installations
If you install TYPO3 manually and create the MySQL database using the install tool, "utf8mb4" is used as the charset and "utf8mb4_unicode_ci" as the collation.
For upgrades, you can activate this feature manually in LocalConfiguration.php, but you must also ensure that the MySQL database is adapted accordingly. This is not done automatically.
Example for the LocalConfiguration.php (excerpt):
'DB' => [
'Connections' => [
'Default' => [
'driver' => 'mysqli',
...
'charset' => 'utf8mb4',
'tableoptions' => [
'charset' => 'utf8mb4',
'collate' => 'utf8mb4_unicode_ci',
],
],
],
],
Directory for language files changed
Downloaded XLF language files are normally stored in the "typo3conf/l10n" directory.
If the environment variable "TYPO3_PATH_ROOT" is set, which applies to all Composer-based installations, the XLF language files
are stored outside the document root in the "var/labels/" directory.
Old TypoScript condition syntax "deprecated"
In TYPO3 9, the "Symfony Expression Language" is used for TypoScript conditions. As a result, the previous syntax has been marked as "deprecated". You can still use the old syntax in TYPO3 9, but this will no longer be possible with TYPO3 10.
You should therefore change all TypoScript conditions to the new syntax now.
Further changes in the ChangeLog
We have only listed a fraction of all the changes here. Many functions have also been classified as obsolete in this version and will be removed from the system with the next TYPO3 version.
We therefore strongly recommend that you study all changes in the "TYPO3 CMS Core ChangeLog".
Version 9.4.0 (Sprint Release 04.09.2018)
Version 9.4.0 was released on 04.09.2018. The biggest innovation in this release was the ability to generate readable, search engine-friendly URLs "out of the box". In the future, extensions such as RealURL or CoolURI will probably no longer be necessary.
In the following video we show a few of the most striking new features of this version.
Extension "Documentation" removed
Using the "Documentation" system extension, it was possible to load core or extension documentation directly into the backend and read it there.
As this extension was not really used by the majority of users and required a considerable amount of maintenance, it was removed without replacement. All documentation can still be found on docs.typo3.org.
Page-based URL generation
Out-of-the-box URLs for pages are now automatically generated as readable, search engine-friendly URLs. This should make extensions such as RealURL or CoolURI unnecessary in the future.
At the moment this only works for normal pages, but in future the URLs for extensions such as news will also be generated using these.
For this to work, it is necessary to create a configuration for the website via the new "Sites" backend module.
XML Sitemap
It is now possible to generate XML sitemaps for SEO purposes without third-party plugins.
When this new feature is activated, a sitemap index with one or more sitemaps is created. Out of the box, a sitemap is generated with all pages of the current website and language.
A different sitemap can be rendered for each page and language.
To activate the sitemap, the static TypoScript template "XML Sitemap (seo)" must be integrated.
It is also necessary to configure a site via the Sites backend module.
The sitemap can then be called up via its own page type, for example name-der-domain.de
The sitemap can also be extended for data records, for example from the news extension. An example configuration can be found in the corresponding upgrade documentation (search for "sitemap" in the backend module).
Further changes
There are many other changes that are relevant for integrators and developers. A detailed list of all changes can be found in the "Upgrade" backend module behind the "Upgrade Documentation" button.
In addition, the "What's news" slides show all relevant changes clearly and with code examples.
Version 9.3.0 (Sprint release 12.06.2018)
The TYPO3 9.3.0 version was released on 12.06.2018.
The focus of this sprint release was on new integrated SEO features, improvements regarding the GDPR and increased security in general.
We present a few of the new features here, detailed information can be found in the <LINK typo3.org/article/typo3-v930-released/> press release
SEO fields in the page properties and output of meta tags
There is a new "SEO" tab in the page properties. Here, for example, the browser title can be changed independently of the page title, the robots meta tag can be set (index, follow) and independent titles, images and descriptions can be stored for Facebook and Twitter.
These additional meta tags are also output directly in the HTML source code of the front end.
Automatic detection of the languages for the Language-HMENU
The special = language property of the HMENU-cObject has long been used to generate a language switch menu.
Previously, the IDs of the languages to be displayed had to be stored directly in the value property.
The new option "auto" takes over the languages that were created for the respective site in the new backend module "Site Configuration".
Example:
New TypoScript conditions for Site and Site Language
Two new TypoScript conditions have been added that can react to the new site configuration.
Condition on the site identifier:
[site = identifier = someIdentifier, base = https://www.typo3.org/]
page.30.value = fo
[global]
Condition on the site language:
[siteLanguage = locale = de_CH.UTF-8, title = Switzerland]
page.40.value = bar
[global]
<f:if condition="{languageNavigation}">
<ul id="language" class="language-menu">
<f:for each="{languageNavigation}" as="item">
<li class="{f:if(condition: item.active, then: 'active')}{f:if(condition: item.available, else: ' text-muted')}">
<f:if condition="{item.available}">
<f:then>
<a href="{item.link}" hreflang="{item.hreflang}" title="{item.navigationTitle}">
<span>{item.navigationTitle}</span>
</a>
</f:then>
<f:else>
<span>{item.navigationTitle}</span>
</f:else>
</f:if>
</li>
</f:for>
</ul>
</f:if>
The call of Core TypoScript with the file extension .txt is discarded
The file extensions of all Core TypoScript and TSconfig files have been changed.
TypoScript => .typoscript
TSconfig => .tsconfig
If you include core files in your own TypoScript, the extensions must be adapted accordingly.
Example:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:form/Configuration/TypoScript/setup.txt">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/constants.txt">
must be changed to:
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:form/Configuration/TypoScript/setup.typoscript">
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:fluid_styled_content/Configuration/TypoScript/constants.typoscript">
youtube-nocookie.com as default domain for Youtube videos
When integrating YouTube videos via the "Text & Media" content element, the domain youtube-nocookie.com is now used by default. This change is an adaptation to the requirements of the GDPR.
However, if the previous domain youtube.com is to be used, this must be actively configured:
Further changes
A complete list of changes can be found in the <LINK docs.typo3.org/typo3cms/extensions/core/latest/Changelog/9.3/Index.html>ChangeLog for version 9.3.0.
Version 9.2.0 (Sprint release 10.04.2018)
Site Handling
The most notable innovation in TYPO3 version 9.2 is the site handling functionality. The Site Management module in the backend of TYPO3, which was already introduced in version 9.1, now contains a new "Configuration" submodule.
This allows integrators and site administrators to add and change a global configuration for one or more websites.
A site configuration has a unique (human-readable) identifier and configuration values such as the root page ID, base path (entry point), language definitions, etc.
By storing the settings in a YAML file under "typo3conf/sites/site-identifier/", it is easy to maintain the configuration in a version control system such as Git.
The site handling functionality already supports configurations such as domains, languages, error handling and will be further expanded until the v9 LTS release later this year.
Debugging and profiling
The well-known "TYPO3 Admin Panel" offers a deeper insight into the internal processes of TYPO3 at runtime. Once activated, TYPO3 integrators and site administrators can access performance and cache statistics, settings of a specific page, etc. They can also simulate certain frontend access situations. You can also simulate certain front-end access situations. For example, it is possible to mimic a specific user group or simulate a timestamp that can have an impact on what is displayed in the frontend.
This feature has not been removed from TYPO3, but the admin panel is being brought back up to date. As a first step, it has been moved from the core to a dedicated system extension that allows integrators to easily enable and disable the feature as needed. This step also forms the basis for further improvements such as a modern redesign and other new functions. Better profiling options and the ability to add your own functions via an API are just two of the planned improvements.
Please note that the (new) Admin Panel must be activated in the Extension Manager as soon as you have updated an existing TYPO3 instance to version 9.2.
Another new feature for TYPO3 integrators and developers is the fact that the values of fields are displayed in the backend. The names of dropdown box elements often do not clearly represent the values that are written to the database. CSS class names are a good example: If editors can choose from a list of options in a dropdown box, the labels could be "Ruler before" or "Indent, 33%/66%". Of course, these are not the values that are stored in the database, but "ruler-before" or "indent-left".
If backend debug mode is enabled ([BE][debug] = 1), the actual values of fields are displayed in square brackets for backend users with administrator rights. This further improves the recently introduced option of displaying field names
TBD: SCREENSHOTS
Mail queue
The SwiftMailer project offers a sophisticated PHP library that represents the de facto standard for creating and sending RFC-compliant emails in PHP with a wide range of functions. SwiftMailer has been integrated into TYPO3 since version 4.5.
With TYPO3 version 9.2 it is now possible to use the queue functionality of SwiftMailer - also known as "spool transport". In most cases, developers want to send emails immediately, but in certain circumstances it is advantageous to "spool" emails and process them later, e.g. for performance reasons. The Mail API of TYPO3 version 9.2 now supports the "SpoolTransport" functionality of SwiftMailer.
Mails can be held in memory (and only sent if the HTTP request has not caused an exception or error) or stored in files. In the latter case, the sending of spooled emails can be triggered by a command line call or by a scheduler task. In both cases, the number of emails to be processed and the maximum time can be limited.
Improvements for editors
There are two new features in TYPO3 9.2 especially for the target group of editors.
A content element on a page can often be used as a template for other, very similar elements. This can be, for example, a text/image where most of the individual settings, e.g. headline, appearance, access restrictions, etc. should be exactly the same or only require minor adjustments. In these cases, it makes sense to clone the existing element, which was already possible with "WEB → List" and copy/paste functions. However, this process requires a number of steps and clicks.
A new "Duplicate" button has been added, which appears when adding or editing a content item in the backend. With one click, backend users can clone a content item, greatly simplifying the process.
The second improvement has a direct impact on the backend user interface (UI) and affects editors as well as developers and designers. TYPO3 version 9.2 introduces a series of so-called "toggle switches", which not only look good, but are also a useful tool to make it easier for backend users to switch between two states.
Version 9.1.0 (Sprint Release 30.01.2018)
mod.web_info.fieldDefinitions {
0 {
label = LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:pages_0
fields = title,uid,alias,starttime,endtime,fe_group,target,url,shortcut,shortcut_mode
}
1 {
label = LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:pages_1
fields = title,uid,###ALL_TABLES###
}
2 {
label = LLL:EXT:info/Resources/Private/Language/locallang_webinfo.xlf:pages_2
fields = title,uid,table_tt_content,table_fe_users
}
}
Show field name next to title in debug mode
If debug mode is active and you are logged into the backend as an administrator, the name of the field in the database is displayed next to each input field. Previously, this required either a look into the HTML source code of the backend or directly into the database.
This is a very practical feature, especially for integrators and developers!
New system extension "redirects"
The new system extension "redirects" offers flexible handling of HTTP redirects. This is useful for both administrators and marketing.
The new "Redirects" module can be found in the new "Site Management" main backend module. Redirects can be created and managed here.
This can be useful, for example, if the URL of a website has changed (e.g. due to restructuring of the content or a relaunch) or if short, concise URLs are to be generated for advertising campaigns/landing pages.
A "hit" statistic for the redirects can optionally be activated globally, i.e. how often the redirects are accessed. Normally, however, tools such as Google Analytics or Matomo (Piwik) are used for this purpose. You should also note that each hit triggers an additional UDATE SQL query. This could be a performance problem on well-visited pages!
The statistics can be activated via the following setting:
Redirect functionality has been moved from the domain record to the new Redirects module.
Previously, it was possible to define a redirect in a domain record (database table sys_domain). This functionality has been moved to the new redirects module, the data is stored in the new database table sys_redirect.
When upgrading to TYPO3 9.1, an upgrade wizard is executed for the data migration.
System extension rsaauth
The extension rsaauth was marked as "deprecated". The reason for this was the inadequate effect of this extension on the security of the website. This is because only the transmission of the password was encrypted.
It is clearly recommended to protect all pages that transmit sensitive data, especially passwords, with an SSL certificate so that all data is transmitted in encrypted form.
As always, further details can be found in the changelog and the official press release.
Version 9.0 (Sprint Release 12.12.2017)
New system maintenance area
Some new backend modules in the "Admin tools" area are striking. The following modules have been added:
- Maintenance
- Settings
- Upgrade
- Environment
These are the areas that were previously found in the Installtool. The install tool will be better integrated into the backend with TYPO3 9. The design has also been adapted to the backend.
If you are logged in as an administrator in the backend, you no longer need to log in to the install tool.
In the individual modules, you will find the largely familiar sub-items such as the Database Analyzer or the Upgrade Wizards.
Usability has also been improved: where previously many clicks were necessary to run the tests for graphics processing, for example, now only one click is required to start all tests.
One new feature is the Extension Scanner, which checks all installed extensions for outdated function calls and can therefore be a valuable aid when upgrading or developing your own extensions.
Another new feature is the option to define individual admin users as so-called "system maintainers". If at least one admin user is defined here, only the members of this group have full access to the areas of the install tool.
This allows a division between administrators and super administrators, a concept that is already familiar from other systems.
Of course, direct access to the install tool is still possible if access to the backend is no longer possible. Here, as before, you must log in with the Installtool password and ensure that the ENABLE_INSTALL_TOOL file exists in the typo3conf/ directory.
Display of unused content elements
If you changed the backend layout on a page with existing content, it could happen that content no longer appeared to be available. This was due to the fact that a content area with the same column ID (colPos) did not exist in the new backend layout.
Of course, this seemingly missing content could be manually moved back into the correct "column" at any time via the list view.
In TYPO3 9 there will be a new view for the unused elements. As soon as a content element with an incorrect column assignment is detected, the user receives both a text message and the option to simply move the incorrectly assigned elements to the correct column using drag'n drop.
Configurable size of thumbnails in the file list
In the file list module, you can display small preview graphics (thumbnails) of images or PDF documents.
These thumbnails appear quite small on large monitors, especially nowadays, and users with impaired vision may find it difficult to recognize the small images.
With two new options in UserTSConfig, the width and/or height of the thumbnails can be adjusted as required.
## Size of the thumbnails in the file list
options.file_list.thumbnail.width = 256
options.file_list.thumbnail.height = 256
Buttons for translation mode can be deactivated
Since TYPO3 8.7, when creating translations for content elements, you can choose whether you want to create a translation (linked to the original) or a copy for the translation (independent of the original).
In TYPO3 9 you can deactivate these buttons via Page- or UserTSConfig if you only want to allow one mode.
The following options would only allow the copy mode:
## Disable buttons for translations
mod.web_layout.localization.enableCopy = 1
mod.web_layout.localization.enableTranslate = 0
Confirmation finisher for the form extension
The confirmation finisher, which can be used to display a message after a form has been sent, can now be selected and configured directly in the form editor. A simple line of text or a content element (stored on another page) can be displayed.
Previously, this finisher could not be selected directly in the backend, but had to be configured via YAML.
Render CSS inline
Using a new parameter in TypoScript, CSS can be rendered "inline". This means that the CSS is not loaded as a separate file, but is inserted directly into the HTML source code generated by TYPO3. This can be very interesting for optimizing the performance of a website, especially in conjunction with compressCss and concatenateCss
Example:
config.compressCss = 1
config.concatenateCss = 1
page.includeCSS {
normalize = EXT:mysitepackage/Resources/Public/Css/normalize.css
normalize.inline = 1
}
## include single file
<INCLUDE_TYPOSCRIPT: source="FILE:EXT:mysitepackage/Configuration/TypoScript/Modules/my_settings.typoscript">
## Include all files with the file extension .ts from a directory
<INCLUDE_TYPOSCRIPT: source="DIR:EXT:mysitepackage/Configuration/TypoScript/Modules/" extension="typoscript">
## Include single file
@import 'EXT:mysitepackage/Configuration/TypoScript/randomfile.typoscript'
## Load all files with the file extension .typoscript from a directory
## Sort alphabetically by file name
@import 'EXT:mysitepackage/Configuration/TypoScript/*.typoscript'
## Load all files in a directory, regardless of the file extension
@import 'EXT:mysitepackage/Configuration/TypoScript/'
Important changes
css_styled_content removed from the core
The previous system extension css_styled_content will no longer be on board with a fresh TYPO3 9. fluid_styled_content is its direct replacement. However, css_styled_content will be moved to the TYPO3 Extension Repository (TER) and can be installed manually or during the upgrade if required.
JSMENU removed
The menu type JSMENU has been removed without replacement. This menu type has not been developed for years and is no longer needed.
Functions backend module removed
The wizards for creating several pages at the same time or for sorting existing pages could be started via the functions backend module
These two wizards can now be called up directly via the context menu in the page tree. However, the functions module can be installed later if required; it is already available as the "func" extension in the TER.
Revised t3editor
The t3editor, which can be used to edit TypoScript in the backend with syntax highlighting and autocompletion, has been completely revised.
One important change: autocomplete, which was previously triggered automatically when a period was entered, must now be triggered manually using the key combination ctrl+space (Mac) or ctrl+space (Win).
Simplified standard backend layout
A remnant from old TYPO3 times were the 4 content columns "Left", "Normal", "Right" and "Margin", which were displayed on every page in a freshly installed TYPO3.
However, these content columns usually did not meet the actual requirements of a web project, and with the introduction of backend layouts in TYPO3 4.5 at the latest, it was very easy to create your own, even more complex layouts.
As a consequence, the standard backend layout has now been simplified and only displays one content column (colPos = 0). Of course, you can still implement any layouts with your own backend layouts.
Of course, these were just a few of the changes in TYPO3 9.0.0 so far. Under the hood, a lot more has happened, which is also interesting for developers. You can see this in detail in the commit messages on Github.
Stay informed about changes
There are several ways to stay informed about changes during the development of TYPO3 9 LTS.
One possibility is the Twitter account t3git_master, which automatically tweets all changes to the TYPO3 code, including a link to the corresponding commit message on Github, where you can then read details about the change.
However, the integrated upgrade documentation in the new TYPO3 install tool is certainly simpler. The corresponding module was already introduced in TYPO3 8 LTS as "Upgrade Analyzer" and has been renamed and revised for version 9. Here you can view all changes including descriptions.