---
title: "Feature: Choose which contracts a profile shows"
manual: "Academic Profiles"
version: "main"
source: "Changelog/3.0/Feature-ContractDisplayPolicy.rst"
rendered: "2026-09-23T01:52:11+00:00"
---

# Feature: Choose which contracts a profile shows {#feature-contract-display-policy}

## Description {#description}

Every view rendered every contract of a profile. Editors and integrators now
choose which of them:

-   The list and list-and-detail elements offer
    **Contracts per profile** \- all of them or only the first -,
    **Only contracts of the selected organisational units and function
    types** and **Only contracts valid today**.
-   The card and selected-profiles elements offer **Contracts per
    profile** and **Only contracts valid today**. They select their
    profiles by hand and apply no unit or function type restriction.
-   The detail view is configured in `Settings.yaml`, per block:
    `profile.details.position` and `profile.details.contact` take
    `contracts` (`all` or `first`) and `onlyValid`.

The options apply in a fixed order: the unit and function type filter, then
validity, then "first". "First" is therefore the first of the contracts left, in
the editor's order of the profile's contracts. A contract without a start or end
date is not limited on that side.

While "only valid today" applies, a page is cached no longer than until the next
midnight on which a contract that passes the unit and function type filter
starts or stops being valid, so the change is visible on that day rather than
with the next regular cache expiry - at most 24 hours away on TYPO3 v13, and a
year on TYPO3 v14 without `config.cache_period`. The shorter
lifetime is set on the page cache of the request that rendered the contracts;
without the option, the page keeps the lifetime it would have without it.

The selected-contracts element and the contacts element of
**EXT:academic_contacts4pages** render the contract that was chosen,
whatever the options say.

Templates select the contracts through the new ViewHelper
`<persons:contracts>` of the namespace
`http://typo3.org/ns/FGTCLB/AcademicPersons/ViewHelpers`. See
[Which contracts a profile shows](../../Configuration/Index.html#configuration-contract-display) and [Which contracts an item renders](../../Templates/Partials/Index.html#templates-contract-selection).

## Impact {#impact}

Nothing changes until an option is set: the defaults show every contract, as
before, and the shipped `Settings.yaml` states them for both detail
blocks.

A project copy of `Partials/Profile/Contract/Item.html`,
`Partials/Profile/PublicProfile/Position.html` or
`Partials/Profile/PublicProfile/Contact.html` that loops over
`{profile.contracts}` ignores the options. Replace the loop with the
ViewHelper, as the shipped partials do, and a template filter of its own can go.
