---
title: "Breaking: Site sets and static templates have been restructured"
manual: "Academic StudyPlan"
version: "3.0"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-study-plan:breaking-site-sets-and-static-templates-restructured@3.0"
source: "Changelog/2.4/Breaking-SiteSetsAndStaticTemplatesRestructured.rst"
rendered: "2026-10-26T17:55:56+00:00"
---

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

## Description {#description}

This extension already shipped both delivery mechanisms, and it already hid its
content element by default, as the only academic extension that did. What it
shipped them through were four one-line `@import` files around three
real ones:

-   [`Configuration/TypoScript/Default/setup.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/TypoScript/Index.html#file-extension-configuration-typoscriptsetup-typoscript) and
    [`Configuration/Sets/AcademicStudyPlan/setup.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/Sets/Index.html#file-set-setup-typoscript) both imported
    `Configuration/TypoScript/Includes/ContentElement.typoscript` and
    `Configuration/TypoScript/Includes/Page.typoscript`.
-   `Configuration/TsConfig/Default.tsconfig` and
    [`Configuration/Sets/AcademicStudyPlan/page.tsconfig`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/Sets/Index.html#file-set-page-tsconfig) both imported
    `Configuration/TsConfig/Includes/academic-study-plan.tsconfig`.

The indirection is gone, apart from the deprecated path of version 2.3, see
[Deprecation: The static template path of version 2.3](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:deprecation-legacy-static-template-path@3.0). Both mechanisms now read one
physical copy of every file, and both of them deliver the extension per
component:

-   `Configuration/TypoScript/ContentElement/` holds the TypoScript of the
    **Academic Study Plan** content element: the content object, the
    Fluid root paths and the two frontend assets. It is what the static template
    registers *and* what the set points its `typoscript` key at.
-   `Configuration/TSconfig/ContentElement/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 do not exist there.

The directory holding the page TSconfig was renamed from
`Configuration/TsConfig` to `Configuration/TSconfig` in the same
release, and that directory is part of a value stored in page records, see
[Important: The page TSconfig directory is now spelled TSconfig](https://docs.typo3.org/permalink/fgtclb/academic-study-plan:important-1787141400@3.0).

Three things changed beyond the paths:

-   The three Fluid root paths of the content element are **constants** now,
    `plugin.tx_academicstudyplan.view.templateRootPath`,
    `…partialRootPath` and `…layoutRootPath`. They were
    assigned in the setup directly and could only be changed by overriding the
    content element object. The shipped values are unchanged, and the new
    `constants.typoscript` is delivered by both mechanisms together with
    the setup.
-   The new content element wizard entry moved out of 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) into the page TSconfig of the component,
    together with the `show` key that TYPO3 v12 needs to offer the
    element in the wizard at all. Both arrive with the component now instead of
    with every installation. The `[typo3.branch == "12.4"]`
    condition around them is gone: the entry is registered on TYPO3 v13 as well
    now, where it changes nothing, because the wizard is built from TCA there
    and the entry carries the same key.
-   The published set `fgtclb/academic-study-plan-default` is an alias
    without payload now. It depends on the new aggregate
    `fgtclb/academic-study-plan`, which depends on the component set
    `fgtclb/academic-study-plan-content-element`.

## 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-study-plan:deprecation-legacy-static-template-path@3.0).

A page record that selected the old page TSconfig file keeps its stored value
too, and that value now points at a file that does not exist. An unresolved page
TSconfig include is silent, so the content element stops being selectable on
that page tree without any message.

A site package that imported
[`Configuration/TypoScript/Default/setup.typoscript`](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ExtensionArchitecture/FileStructure/Configuration/TypoScript/Index.html#file-extension-configuration-typoscriptsetup-typoscript) by path keeps getting
the configuration, deprecated in the same way, once it also imports the
`constants.typoscript` 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.

> [!WARNING]
> Do not open an existing **Academic Study Plan** 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. This is what the old page
> TSconfig file did, so an installation that stops resolving it is exposed to
> exactly this.

## Affected Installations {#affected-installations}

Installations that select the static template or the page TSconfig file of this
extension, that depend on its site set, or that import one of the shipped files
from an own site package.

## Migration {#migration}

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

| Old entry | New entry |
| --- | --- |
| **Academic StudyPlan (Default) (academic_study_plan)**, stored as `EXT:academic_study_plan/Configuration/TypoScript/Default` | **Academic Study Plan: All components (academic_study_plan)**, stored as `EXT:academic_study_plan/Configuration/TypoScript/Full`, or **Academic Study Plan: Content element (academic_study_plan)**, stored as `EXT:academic_study_plan/Configuration/TypoScript/ContentElement` |

Replace the page TSconfig entry in the page record of the site root, tab
**Resources**, field **Page TSconfig**:

| Old entry | New entry |
| --- | --- |
| **Academic StudyPlan (Default) (academic_study_plan)**, stored as `EXT:academic_study_plan/Configuration/TsConfig/Default.tsconfig` | **Academic Study Plan: All components (academic_study_plan)**, stored as `EXT:academic_study_plan/Configuration/TSconfig/Full/page.tsconfig`, or **Academic Study Plan: Content element (academic_study_plan)**, stored as `EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig` |

On TYPO3 v12 this is the only way to get the content element back. Site sets
arrived in TYPO3 v13.1, and the set files of this extension are never read on
v12.

Sites on TYPO3 v13 that use the site set instead need no migration. 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:academic_study_plan/Configuration/TypoScript/Default/setup.typoscript` | `EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript` |
| `EXT:academic_study_plan/Configuration/TypoScript/Includes/ContentElement.typoscript` | `EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript`, together with `EXT:academic_study_plan/Configuration/TypoScript/ContentElement/constants.typoscript` in the constants of the same template |
| `EXT:academic_study_plan/Configuration/TypoScript/Includes/Page.typoscript` | `EXT:academic_study_plan/Configuration/TypoScript/ContentElement/setup.typoscript`, which now carries the two frontend assets as well |
| `EXT:academic_study_plan/Configuration/TsConfig/Default.tsconfig` | `EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig` |
| `EXT:academic_study_plan/Configuration/TsConfig/Includes/academic-study-plan.tsconfig` | `EXT:academic_study_plan/Configuration/TSconfig/ContentElement/page.tsconfig` |

A site configuration on TYPO3 v13 may name the new sets instead of the published
one:

| Set | Delivers |
| --- | --- |
| `fgtclb/academic-study-plan-default` | Unchanged in name and in what it delivers, now an alias of the aggregate below. |
| `fgtclb/academic-study-plan` | Everything this extension ships. |
| `fgtclb/academic-study-plan-content-element` | The **Academic Study Plan** content element only. |
