marekskopal/typo3-team

Team members list plugin for TYPO3 CMS

Maintainers

Package info

github.com/marekskopal/typo3-team

Homepage

Type:typo3-cms-extension

pkg:composer/marekskopal/typo3-team

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-06-08 21:42 UTC

This package is auto-updated.

Last update: 2026-06-08 21:44:10 UTC


README

Team members list as a content element in TYPO3. Members with photo, role, contact details and rich-text bio are managed in the TYPO3 backend; the frontend renders a responsive card grid with an optional detail page.

Features

  • Team members with first name, last name, position, photos (FAL) and rich-text bio
  • Contact fields: email, phone, LinkedIn URL, website URL
  • Manual drag & drop sorting in the backend
  • Pin members as top — top members are sorted first and can be listed separately
  • Multiple images per member via FAL; main image getter exposed for templates
  • TYPO3 system categories support per member (e.g. departments)
  • Show only top FlexForm option to display only pinned members
  • Template layouts — switchable per content element via FlexForm, configured through TSconfig or PHP globals
  • Separate List and Show actions for grid and member detail page
  • Responsive CSS grid, no JavaScript
  • Multilingual support (EN, CS, DE labels out of the box)
  • Customizable templates and styling

Requirements

  • PHP 8.3+
  • TYPO3 13.4 or 14.x

Installation

composer require marekskopal/typo3-team

After installation, run the database analyser in the TYPO3 Install Tool to create the required tables.

Setup

Include the TypoScript Set Team in your site package or via the site configuration sets.

Backend Setup

Create Team member records on the page where the content element is placed:

  • First name / Last name — required
  • Position — job title shown under the name
  • About — rich-text bio (RTE)
  • Email / Phone / LinkedIn URL / Website URL — optional contact fields
  • Images — one or more FAL files; the first one is used as the main image
  • Categories — optional TYPO3 system categories
  • Top — pin the member so they are sorted first (and can be shown exclusively via the Show only top option)

Drag and drop members to set their display order within each tier (top members always appear first). Then add the Team content element to the same page.

Content Element Options (FlexForm)

Option Description
Show only top When enabled, only members marked as Top are displayed
Member ordering Choose the ordering strategy (top + sorting, sorting only, UID, alphabetical)
Template layout Select an alternative template layout defined in TSconfig or PHP globals

Domain Model

The Member model exposes the following getters:

  • getFirstName(): string
  • getLastName(): string
  • getFullName(): string — concatenated, trimmed
  • getPosition(): string
  • getAbout(): string — RTE content
  • getEmail(): string
  • getPhone(): string
  • getLinkedInUrl(): string
  • getWebsiteUrl(): string
  • getImages(): ObjectStorage<FileReference>
  • getImageMain(): ?FileReference — first image, or null
  • getCategories(): ObjectStorage<Category>
  • getPrimaryCategory(): ?Category
  • isTop(): bool

Template Layouts

Register custom template layouts in Page TSconfig:

tx_msteam.templateLayouts {
    my_layout = My custom layout
}

Or in PHP (e.g. ext_localconf.php):

$GLOBALS['TYPO3_CONF_VARS']['EXT']['ms_team']['templateLayouts'][] = ['My layout label', 'my_layout'];

Then configure the corresponding template paths in TypoScript:

plugin.tx_msteam_team.settings.templateLayouts {
    my_layout {
        templateRootPath = EXT:your_extension/Resources/Private/Templates/MsTeam/MyLayout/
        partialRootPath  = EXT:your_extension/Resources/Private/Partials/MsTeam/MyLayout/
        layoutRootPath   = EXT:your_extension/Resources/Private/Layouts/MsTeam/MyLayout/
    }
}

Customization

Templates

Override templates by setting custom paths in TypoScript:

plugin.tx_msteam_team.view.templateRootPaths.10 = EXT:your_extension/Resources/Private/Templates/MsTeam/
plugin.tx_msteam_team.view.partialRootPaths.10  = EXT:your_extension/Resources/Private/Partials/MsTeam/
plugin.tx_msteam_team.view.layoutRootPaths.10   = EXT:your_extension/Resources/Private/Layouts/MsTeam/

Styling

The extension includes minimal CSS. Key classes:

Class Element
.msteam-wrapper Outer wrapper
.msteam__list Grid of member cards
.msteam__item Single member card
.msteam__image Cropped square photo on the card
.msteam__name Member full name on the card
.msteam__position Job title on the card
.msteam__detail Detail page wrapper
.msteam__contact Contact list (email/phone/LinkedIn/website)

License

GPL-2.0-or-later