What does it do?
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:
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
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 — unless Group by role is switched off in the content element, see Group by role. Roles are records of their own and are usually kept in a storage folder.
Frontend output
The contacts of a page are rendered either with the content element
Contacts for this page, which can be placed anywhere on the page,
or directly in a page template through the data processor
academic-, which adds the contacts, their roles and the contacts
without a role to the page rendering, see The contacts in a page template.
Both display the person through the Profile/ partial of
EXT:, so contacts look like the profiles rendered by that
extension. The content element renders it through a partial of its own,
Contacts/, which a site package overrides to change the card,
see The contact item partial.
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
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: — 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.