---
title: "Feature: The study plan assets can be switched off"
manual: "Academic StudyPlan"
version: "main"
source: "Changelog/3.0/Feature-StudyPlanAssetSwitches.rst"
rendered: "2026-10-02T15:38:26+00:00"
---

# Feature: The study plan assets can be switched off {#feature-study-plan-assets-can-be-switched-off}

## Description {#description}

The study plan content element registers its stylesheet and its script from
inside its own template, with `<f:asset.css>` and
`<f:asset.module>`. An installation that wanted to style the element
itself therefore had to override the whole template - and then either lost the
script or shipped a copy of it that stopped following the original.

Both assets are switchable now, per site, without touching the template:

| Setting | Default | Off means |
| --- | --- | --- |
| `plugin.tx_academicstudyplan.assets.css` | `true` | The page does not load `EXT:academic_study_plan/Resources/Public/Css/frontend/academic-study-plan.css`. |
| `plugin.tx_academicstudyplan.assets.js` | `true` | The page does not load `@fgtclb/academic-study-plan/frontend/academic-study-plan.js`. |

They are declared by the site set
`fgtclb/academic-study-plan-content-element`, so every site that renders
the element can set them:

**config/sites/my-site/settings.yaml**

```yaml
plugin.tx_academicstudyplan.assets.css: false
```

An installation that configures its frontend through `sys_template`
records sets the TypoScript constants of the very same names, in
**Constants**:

**Constants of the root sys_template record**

```typoscript
plugin.tx_academicstudyplan.assets.css = 0
```

## Impact {#impact}

Nothing changes for an installation that configures neither: both assets are
loaded exactly as before, and only a page that carries the element loads them.

**The markup is unchanged either way.** Switching the script off does not
reduce the element to what works without JavaScript - the filter, the semester
accordion and the module dialogs need a script, and an installation that
switches the shipped one off brings its own.

## Affected Installations {#affected-installations}

Every installation that renders the study plan content element. The defaults
keep the assets exactly as they were, so switching nothing on and nothing off
needs no action here.

An installation that overrode `AcademicStudyPlan.html` only to leave out
one of the two assets can drop that override and set the switch instead -
which also puts it back on the shipped script, with the keyboard handling and
the dialog behaviour it has gained since the copy was taken.

Two cases the switches do not reach, both silent:

-   **An installation that keeps its own copy of the template.** The copy is
    rendered as it is, so its own `f:asset` lines keep loading
    unconditionally until they are wrapped in the same `f:if`.
-   **A content object written by hand** rather than copied from
    `setup.typoscript`. It assigns no `settings.assets` block,
    so both conditions are false and the element loads *neither* asset. Copy the
    block, or assign the two keys.

> [!NOTE]
> Switching the script off is not the whole story for an installation that
> then brings its own: the filter list item the script clones is rendered
> `hidden`, and a script of your own has to take that attribute off the
> items it builds. See
> [Important: The study plan filter template item is hidden](Important-StudyPlanFilterTemplateItemIsHidden.html#important-study-plan-filter-template-item-is-hidden).

> [!NOTE]
> The switches are declared twice, once as a site setting and once as a
> TypoScript constant, with the same default. A site that includes the site
> set **and** the static template reads the constants after the site
> settings, so the constant wins there - one mechanism per site, as
> [Do not combine both](../../Configuration/Index.html#one-mechanism-per-site) says.
