---
title: "Important: The program page renders its own content"
manual: "Academic Programs"
version: "main"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-programs:important-program-page-renders-its-own-content@main"
source: "Changelog/2.4/Important-ProgramPageRendersItsOwnContent.rst"
rendered: "2026-10-17T08:47:58+00:00"
---

# Important: The program page renders its own content {#important-program-page-renders-its-own-content}

## Description {#description}

The page template of the page type **Academic program** rendered the
content elements of the page through the global TypoScript object
`styles.content.getContent`. Since the configuration was cut per
component in this version, this extension defines that object only in the
component `fgtclb/academic-programs-content-load` and in its static
template, which **Academic Programs: All components** includes. The
content load components of EXT:academic_partners and EXT:academic_projects
define the same path. A site on the component sets or the component static
templates of this extension without any of them got an exception on every
program page:

```text
No Content Object definition found at TypoScript object path "styles.content.getContent"
```

The page object of the program page type now carries the content itself, as the
variable `programContent`:

```typoscript
[page && traverse(page, "doktype") == 20]
  page.10.variables.programContent = CONTENT
  page.10.variables.programContent {
    table = tt_content
    select {
      orderBy = sorting, uid
      where = {#colPos}=0
    }
  }
[END]
```

`Resources/Private/Pages/AcademicProgram.html` renders it as
`{programContent -> f:format.raw()}`, on a `FLUIDTEMPLATE`
page object and, on TYPO3 v13, on a `PAGEVIEW` one alike. Every
set and every static template of this extension delivers it, except the content
load override on its own.

The content load component is unchanged and still part of the aggregate set
`fgtclb/academic-programs` and of the static template
**Academic Programs: All components**.

## Impact {#impact}

-   A program page renders on a site without the content load component.
-   It renders the same elements as before: the main column, in manual order,
    in the language of the page. Elements that share a `sorting` value
    come in uid order.
-   A customisation of `styles.content.getContent`, for example
    one that slides the content from the parent pages, no longer reaches
    program pages. The same holds for a customisation of
    `styles.content.get` that was parsed before the override,
    because the override copied it into
    `styles.content.getContent`.
-   A template override of `AcademicProgram.html` that renders
    `styles.content.getContent` keeps working as long as the site
    includes one of the content load components that define it.

## Migration {#migration}

Move a customisation of `styles.content.getContent` for program
pages to `page.10.variables.programContent`, inside the same
condition, see [The content of a program page](https://docs.typo3.org/permalink/fgtclb/academic-programs:program-page-content@main):

```typoscript
[page && traverse(page, "doktype") == 20]
  page.10.variables.programContent {
    select.where = {#colPos}=1
  }
[END]
```

A template override of `AcademicProgram.html` can switch to
`{programContent -> f:format.raw()}`, so that it no longer depends on the
content load component.
