Breaking: Site sets and static templates have been restructured
Description
The TypoScript of this extension was shipped through a chain of
@import
statements: the static template read
Configuration/, whose setup. imported
Configuration/, and the site set
fgtclb/ shipped a setup. of its
own that imported the first one again. The page TSconfig existed only as
Configuration/, reachable through the
auto-included Configuration/page.tsconfig and through nothing else — it
was not selectable on a page at all.
Both mechanisms now read one physical copy of every file, and both of them deliver the extension per component instead of as one block:
Configuration/holds the TypoScript of the Contact list content element and is what the static template registers and what the set points itsTypo Script/ List/ typoscriptkey at. Itssetup.carries whattyposcript Configuration/andTypo Script/ Page/ Plugin. typoscript Configuration/used to carry, with one difference: the three Fluid root paths were literals there and are constants now, declared in theTypo Script/ Page/ Fluidtemplate. typoscript constants.beside it.typoscript Configuration/holds its page TSconfig and is what the page field Page TSconfig offers and what the set points itsTSconfig/ List/ page. tsconfig pagetskey at.Configuration/andTypo Script/ Full/ Configuration/are the aggregates for installations that do not use site sets.TSconfig/ Full/ page. tsconfig
The extension ships a constants. for the first time. It
declares the three Fluid root paths of the plugin —
plugin.,
…partial and
…layout — with exactly
the values that were hard coded in the setup before, so a site that changes
nothing renders exactly as it did. What is new is that these paths can now be
overridden as constants, in the constant editor or in
config/.
The content element is now hidden by default. The always-included
Configuration/page.tsconfig removes
academiccontacts4pages_ from the selectable content element
types, and the page TSconfig of the component adds it back — so the element is
offered where it is wanted instead of on every page of every installation. The
TCA registration itself did not move, so the frontend renders existing records
exactly as before. Editing such a record in the backend is a different matter —
read the warning below before upgrading.
Impact
A
sys_ record that selected the old static template keeps its
stored value. The folder of that value holds no TypoScript of its own any more.
It imports the files of the component folder instead, so it delivers the
TypoScript of this extension as before — deprecated, until version 4.0, see
Deprecation: The static template path of version 2.3.
A site package that imported Configuration/TypoScript/setup.typoscript
by path keeps getting the configuration, deprecated in the same way, once it
also imports the constants. that folder holds now. Every
other shipped file it imported by path fails to resolve.
@import
of a missing file is silent, so this shows up as missing configuration rather
than as an error message.
The Contact list content element is no longer offered in the backend until the page TSconfig of the component is included, through the site set or through the page field Page TSconfig.
Warning
Do not open an existing Contact list record in the backend form
on a page that does not include that page TSconfig. An item removed through
TCEFORM. is excluded from the
[ invalid value ] fallback TYPO3 otherwise adds for a stored
value it does not know, and the stored value is dropped from the form data
as well. The field Type therefore comes up with nothing
selected, and saving the record writes whatever the browser preselected
into
CType
— the record silently becomes another content element.
The frontend keeps rendering it correctly until that happens.
Include the page TSconfig of the component on every page tree that holds such records, and do it before editing them.
The set
fgtclb/ keeps its name and keeps
delivering everything, so a site configuration that depends on it needs no
change.
Affected Installations
Installations that select the static template of this extension in a
sys_ record, that import one of the shipped files from an own
site package, or that use the content element without including the page
TSconfig of this extension.
Migration
Replace the static template entry in the
sys_ record:
| Old entry | New entry |
|---|---|
Contacts for Pages (academic_contacts4pages), stored as
EXT: | Academic Contacts4Pages: All components
(academic_contacts4pages), stored as
EXT: — or
Academic Contacts4Pages: Contact list
(academic_contacts4pages), stored as
EXT: |
Add the page TSconfig entry, which did not exist before, in the page record of
the site root, tab Resources, field Page TSconfig:
Academic Contacts4Pages: All components (academic_contacts4pages),
stored as
EXT:. Without
it the content element is not selectable any more, and existing records of it
lose their
CType
when they are saved from the backend form.
Sites that use the site set instead need no migration — but they must not use both mechanisms at once, see the Configuration chapter.
Adjust every
@import
in an own site package:
| Old path | New path |
|---|---|
EXT: | EXT: |
EXT: | EXT: |
EXT: | EXT: |
EXT: | EXT: |
EXT: | EXT: |
Warning
A site package that imports the setup must import the constants as well.
The three Fluid root paths are constants now, and TypoScript leaves an
undefined constant as its own literal text rather than reporting it — so a
site package that imports only
…/Configuration/TypoScript/List/setup.typoscript ends up with
template set to the string
{$plugin. and the plugin
fails with a missing template.
@import 'EXT:academic_contacts4pages/Configuration/TypoScript/List/constants.typoscript'
Neither of the two shipped delivery mechanisms is affected: both read the whole folder.
A site configuration may name the new component set instead of the aggregate:
| Set | Delivers |
|---|---|
fgtclb/ | Unchanged in name, now delivers through the component set below. |
fgtclb/ | The Contact list content element only. |