---
title: "Breaking: Site sets and static templates have been restructured"
manual: "Academic Bite Jobs"
version: "3.0"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:breaking-site-sets-and-static-templates-restructured@3.0"
source: "Changelog/2.4/Breaking-SiteSetsAndStaticTemplatesRestructured.rst"
rendered: "2026-10-26T17:54:59+00:00"
---

# Breaking: Site sets and static templates have been restructured {#breaking-site-sets-and-static-templates-restructured}

## Description {#description}

The TypoScript and the page TSconfig of this extension were shipped twice: the
static template read `Configuration/TypoScript/`, and the site set
`fgtclb/academic-bite-jobs` shipped its own `constants.typoscript`
and `setup.typoscript`, each of them a single `@import` of
that folder. The page TSconfig existed only as the wizard file
`Configuration/TsConfig/Wizards/NewContentElement.tsconfig` and 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/TypoScript/List/` holds the TypoScript of the
    **Bite Jobs List** content element and is what the static template
    registers *and* what the set points its `typoscript` key at.
-   `Configuration/TSconfig/List/page.tsconfig` holds its page TSconfig
    and is what the page field **Page TSconfig** offers *and* what the
    set points its `pagets` key at.
-   `Configuration/TypoScript/Full/` and
    `Configuration/TSconfig/Full/page.tsconfig` are the aggregates for
    installations that do not use site sets. On TYPO3 v12 that is every
    installation, because site sets arrived in TYPO3 v13.1.

Note the directory as well: `Configuration/TsConfig/` was renamed to
`Configuration/TSconfig/`, the spelling TYPO3 itself uses, so that all
academic extensions agree on one.

The content element is now **hidden by default**. The always-included
[`Configuration/page.tsconfig`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/PageTsconfig.html#file-extension-configuration-page-tsconfig) removes `academicbitejobs_list`
from the selectable content element types, and the page TSconfig of the
component adds it back. The element is therefore 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 needs care. Read the warning below before
upgrading.

## Impact {#impact}

A `sys_template` 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 what
**All components** delivers. The path is deprecated and will be removed
in version 4.0, see [Deprecation: The static template path of version 2.3](https://docs.typo3.org/permalink/fgtclb/academic-bite-jobs:deprecation-legacy-static-template-path@3.0).

A site package that imported [`Configuration/TypoScript/setup.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/TypoScript/Index.html#file-extension-configuration-typoscriptsetup-typoscript)
or [`Configuration/TypoScript/constants.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/TypoScript/Index.html#file-extension-configuration-typoscriptconstants-typoscript) by path keeps getting
the configuration, deprecated in the same way. 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 **Bite Jobs 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**. On TYPO3 v12 the page
field is the only one of the two that works, and that same file also carries the
entry of the new content element wizard, which v12 builds from page TSconfig
rather than from TCA.

> [!WARNING]
> Do not open an existing **Bite Jobs List** record in the backend
> form on a page that does not include that page TSconfig. An item removed
> through `TCEFORM.tt_content.CType.removeItems` 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/academic-bite-jobs` keeps its name and keeps delivering
everything, so a site configuration that depends on it needs no change.

## Affected Installations {#affected-installations}

Installations that select the static template of this extension in a
`sys_template` 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 {#migration}

Replace the deprecated static template entry in the `sys_template`
record:

| Old entry | New entry |
| --- | --- |
| **Academic Bite Jobs (academic_bite_jobs)**, stored as `EXT:academic_bite_jobs/Configuration/TypoScript` | **Academic Bite Jobs: All components (academic_bite_jobs)**, stored as `EXT:academic_bite_jobs/Configuration/TypoScript/Full`, or **Academic Bite Jobs: Job list (academic_bite_jobs)**, stored as `EXT:academic_bite_jobs/Configuration/TypoScript/List` |

Add the page TSconfig entry, which did not exist before, in the page record of
the site root, tab **Resources**, field **Page TSconfig**:
**Academic Bite Jobs: All components (academic_bite_jobs)**, stored as
`EXT:academic_bite_jobs/Configuration/TSconfig/Full/page.tsconfig`. 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. They must not use both
mechanisms at once, see the **Configuration** chapter. That applies to
TYPO3 v13 only. On TYPO3 v12 the entries above are required.

Adjust every `@import` in an own site package:

| Old path | New path |
| --- | --- |
| `EXT:academic_bite_jobs/Configuration/TypoScript/constants.typoscript` | `EXT:academic_bite_jobs/Configuration/TypoScript/List/constants.typoscript` |
| `EXT:academic_bite_jobs/Configuration/TypoScript/setup.typoscript` | `EXT:academic_bite_jobs/Configuration/TypoScript/List/setup.typoscript` |
| `EXT:academic_bite_jobs/Configuration/TsConfig/Wizards/NewContentElement.tsconfig` | `EXT:academic_bite_jobs/Configuration/TSconfig/List/page.tsconfig` |
| `EXT:academic_bite_jobs/Configuration/TsConfig/Wizards/*.tsconfig` | `EXT:academic_bite_jobs/Configuration/TSconfig/Full/page.tsconfig` |

A site configuration on TYPO3 v13 may name the new component set instead of
the aggregate:

| Set | Delivers |
| --- | --- |
| `fgtclb/academic-bite-jobs` | Unchanged in name, now delivers through the component set below. |
| `fgtclb/academic-bite-jobs-list` | The **Bite Jobs List** content element only. |
