Configuration 

This extension ships its frontend TypoScript and its backend page TSconfig in two forms: as TYPO3 site sets, and as classic static templates plus page TSconfig files that are selected on a page. Both forms read the very same files, so they configure an installation identically.

Pick one of them per site and stay with it — see Do not combine both for what happens otherwise.

What the sets contain 

The extension ships one content element, so it ships one component set and one aggregate set that depends on it.

Set Delivers
fgtclb/academic-study-plan-content-element The Study Plan content element: its TypoScript ( tt_content.academic_study_plan , the Fluid root paths and the data processor that assigns the semesters and modules to the template) and the page TSconfig that makes the content element selectable in the backend.
fgtclb/academic-study-plan Everything above. This is the set to use unless you deliberately want a subset.
fgtclb/academic-study-plan-default The name this extension published before the sets were cut per component. It delivers exactly what fgtclb/academic-study-plan delivers, and is kept so that existing site configurations keep working.

The component set depends on fgtclb/academic-base-ctype-group, the set of EXT:academic_base that labels the content element group all academic extensions sort their elements into.

The content element is hidden by default 

EXT:academic_study_plan hides its content element for the whole installation and brings it back per component. Whichever of the two mechanisms below you use, it is what makes Study Plan selectable in the backend again — without one of them the content element is not offered, and existing records keep rendering.

This is not new in version 2.4: this extension always hid its content element. What changed is the file that brings it back and the name it is registered under — see Breaking: Site sets and static templates have been restructured.

Include the site set 

Add the set to the config.yaml of the site that should offer the content element:

config/sites/my-site/config.yaml (diff)
 base: 'https://example.com/'
 rootPageId: 1
+dependencies:
+  - fgtclb/academic-study-plan
Copied!

See also TYPO3 Explained, Using a site set as dependency in a site.

Include static templates 

For an installation that still configures its frontend through sys_template records, the same files are registered as static templates and as selectable page TSconfig files.

Include static TypoScript 

Edit the sys_template record of the site root and add the entry to Include static (from extensions):

Entry Delivers
Academic Study Plan: Content element (academic_study_plan) The TypoScript of the Study Plan content element.
Academic Study Plan: All components (academic_study_plan) Every component this extension ships, in one entry.
Academic Study Plan: Path up to 2.3 (deprecated, use All components) (academic_study_plan) The same as All components, for a record that still stores the path of version 2.3. Deprecated, removed in version 4.0, see Deprecation: The static template path of version 2.3.

Include static page TSconfig 

Edit the page record of the site root, tab Resources, field Page TSconfig, and add the entry:

Entry Delivers
Academic Study Plan: Content element (academic_study_plan) Makes the Study Plan content element selectable, and configures its entry in the new content element wizard.
Academic Study Plan: All components (academic_study_plan) Every component this extension ships, in one entry.

The setting is inherited by every page below the one it is set on.

Style the element 

The extension ships no stylesheet. The content element renders the classes and data attributes Templates documents, and the stylesheet of the site package styles them. How the markup is built up, class by class, is described in Styling.

The mono repository the extension is developed in carries an example to start from, the stylesheet of its development instances: _academic-study-plan.scss of EXT:academics_dev_site. It is never shipped with an extension, copy what the site needs.

Three parts of the element depend on rules of that stylesheet, beyond its appearance:

  • A semester header renders an expand and a collapse glyph, and the stylesheet shows one of them, see The glyphs of a semester header.
  • The collapsed filter needs .ace-filter .ace-list[hidden] { display: none } , see Collapse the category filter.
  • The accordion of a narrow viewport and the highlighting of a category are classes the script writes and the stylesheet gives an effect: open and highlighted .

The shipped icons carry a size of their own, 1em. The example sizes every icon of the element to 1.25rem, which is also what keeps a replacement drawing without a width and a height of its own visible, see The glyphs of a semester header.

The label of a dialog trigger is only read out. It carries Bootstrap's visually-hidden , which a site that brings Bootstrap hides already.

Before version 3.0 the extension shipped this stylesheet itself. The setting plugin.tx_academicstudyplan.assets.css that switched it off during the development of 3.0 is gone with it, see Breaking: The study plan ships no stylesheet.

Skip the script 

The content element brings one asset to every page that carries it: the ES module @fgtclb/academic-study-plan/frontend/academic-study-plan.js . A page without the element does not load it.

It can be switched off per site, for an installation that brings its own script:

Setting Default Off means
plugin.tx_academicstudyplan.assets.js true The page does not load the script.

With the site set, it is a site setting: edit it in the backend, in the settings editor of that site, or write it by hand. The editor is the same one on both TYPO3 versions and only sits elsewhere — Site Management > Settings on TYPO3 v13, and Sites > Setup on TYPO3 v14, which merged it into the module that edits the site itself.

config/sites/my-site/settings.yaml
plugin.tx_academicstudyplan.assets.js: false
Copied!

With the static template, it is a TypoScript constant of the same name, Constants of the root sys_template record:

Constants of the root sys_template record
plugin.tx_academicstudyplan.assets.js = 0
Copied!

Collapse the category filter 

The category filter is a row of buttons, one per category the modules of the plan carry. On a plan with many categories it takes up the first screen before a visitor has seen a single semester.

Switched on, the filter renders collapsed behind a toggle button that states whether it is expanded and works by keyboard:

Setting Default On means
plugin.tx_academicstudyplan.filter.collapsible false The filter is hidden until the visitor expands it.
A button Filter by category above the semester columns, the category buttons hidden.

With plugin.tx_academicstudyplan.filter.collapsible switched on, the filter waits behind its toggle.

config/sites/my-site/settings.yaml
plugin.tx_academicstudyplan.filter.collapsible: true
Copied!
Constants of the root sys_template record
plugin.tx_academicstudyplan.filter.collapsible = 1
Copied!

The toggle is built by the script rather than rendered by the template, for the same reason the filter buttons are: a plan whose modules carry no category at all ends up with an empty filter, and a control that expands nothing would be worse than none. Two consequences follow:

  • Switching plugin.tx_academicstudyplan.assets.js off and bringing your own script means bringing the toggle as well. The template renders data-study-plan-filter-collapsible on the filter list and nothing else.
  • The label of the toggle is the one the container carries as data-filter-label , which is the translation of filter.label . An override that drops that attribute gets no toggle at all rather than an unnamed button, and the filter stays expanded.
  • The collapsed state is the hidden attribute, and the stylesheet of the site has to give it an effect ( .ace-filter .ace-list[hidden] { display: none } ) - the browser's own rule for it loses to any author rule that gives the list a display . See Style the element.

Do not combine both 

A site that uses the site set and the static template reads the shipped files twice. The site set is applied before the sys_template record, so the second read happens after the site settings and after config/sites/<site>/constants.typoscript — and it resets every constant the extension ships a default for back to that default. For this extension those are the three Fluid root paths of the content element, the switch of Skip the script and the switch of Collapse the category filter.

Nothing else is damaged: the Constants and Setup fields of the sys_template record, the page TSconfig of a page and the page TSconfig files selected on a page are all applied afterwards and still win. Use one mechanism per site and the question does not arise.