---
title: "What does it do?"
manual: "Academic Contacts for Pages"
version: "3.0"
permalink: "https://docs.typo3.org/permalink/fgtclb/academic-contacts4pages:introduction@3.0"
source: "Introduction/Index.rst"
rendered: "2026-10-26T17:55:07+00:00"
---

# What does it do? {#introduction}

This TYPO3 extension assigns people to pages and displays them in the frontend,
for example the dean's office of a faculty page, the participants of a research
page or the contact persons of a study programme.

A person is not maintained here: the extension builds on `EXT:academic_persons`
and points at one of the contracts of a profile. Everything that is displayed -
the name, the position, the location, the email addresses, the phone numbers and
the physical addresses - comes from that contract, so a change to the person has
to be made once and reaches every page the person is a contact of.

## Contact records {#introduction-contact-records}

A contact is a record of its own, maintained either in the **Contacts**
tab of a page or in the **Linked pages** tab of a contract. Both edit
the same record, so a person can be added from the page it belongs on as well
as from the person itself.

A contact record consists of:

-   ****Page****

    The page the person is a contact of. Filled automatically when the record
    is created from a page.

-   ****Contract****

    The contract of the person to display. Filled automatically when the record
    is created from a contract.

-   ****Role****

    An optional role, for example **Dean's office** or
    **Student advisors**. Contacts sharing a role are rendered as a
    group below the name of that role, contacts without a role are rendered
    below the grouped ones. With **Group by role** switched off in the
    content element, all contacts form one list, see
    [Group by role](https://docs.typo3.org/permalink/fgtclb/academic-contacts4pages:confval-contacts-list-group-by-role@3.0). Roles are records
    of their own and are usually kept in a storage folder.

## Frontend output {#introduction-frontend}

The contacts of a page are rendered either with the content element
**Person’s Contacts on the Page**, which can be placed anywhere on the page,
or directly in a page template through the data processor
`academic-page-contacts`, which adds the contacts, their roles and the contacts
without a role to the page rendering, see [The contacts in a page template](https://docs.typo3.org/permalink/fgtclb/academic-contacts4pages:configuration-page-contacts@3.0).
Both display the person through the `Profile/Item` partial of
`EXT:academic_persons`, so contacts look like the profiles rendered by that
extension. The content element renders it through a partial of its own,
`Contacts/Item.html`, which a site package overrides to change the card,
see [The contact item partial](https://docs.typo3.org/permalink/fgtclb/academic-contacts4pages:configuration-contact-item-partial@3.0).

A contact is only shown while the person behind it is visible in the frontend.
A contact whose contract is hidden, or whose profile is hidden, outside its
start and end time or restricted to a frontend user group the visitor is not in,
is left out of both — together with its role, if it is the only contact holding
it. Hiding a profile therefore removes the person from every page it is a
contact of, without editing a single contact record.

## Contacts and page translations {#introduction-page-translations}

The **Page** field of a contact always stores the uid of the
default-language page — that is how TYPO3 models references to pages, and it
does not change when the contact is translated.

Since version 3.0 a contact follows its page's translations: localizing a
contact — directly, by translating the contract or profile above it, or through
the translation synchronisation of `EXT:academic_persons` — only yields a
translated contact when the page it points at is translated into that language.
For an untranslated page the freshly localized contact is removed again
immediately (in the live workspace as a regular soft delete, in a workspace the
new record is discarded), because such a translation carries no content of its
own and would only make the contact appear twice on the page.

The frontend shows each contact **exactly once per language**: where a
translation exists it represents the contact, otherwise the default-language
record is shown. Translated contact duplicates created by versions before 3.0
therefore stop rendering without any database cleanup; the rows themselves are
left untouched. Contacts copied into a language without a connection to a
default-language record (free mode) are independent records and are exempt from
all of this.

## Third-party icons {#third-party-icons}

The SVG icons below `Resources/Public/Icons/`, except
`Extension.svg`, are [Font Awesome Free](https://fontawesome.com)
icons by Fonticons, Inc., licensed under the [Creative Commons Attribution 4.0
International license](https://creativecommons.org/licenses/by/4.0/). The
notice `Resources/Public/Icons/LICENSE-font-awesome.txt` lists every file
with its Font Awesome name and the changes made to it. The role record icon
draws a shared icon of **academic_base**, which lists it in its own
notice.

This manual shows the icon of the content element from
`Documentation/Images/Icons/contacts.svg`, a copy of
`Resources/Public/Icons/plugin/contacts.svg`, the Font Awesome icon
`address-card`, drawn in a fixed grey instead of the colour of the surrounding
text, so that it reads on a light and a dark page alike.
