
Overview
| Tier | Where configured | Scope |
|---|---|---|
| Extension Configuration | Admin → Settings → Extension Configuration → VidPly | Whole TYPO3 installation |
| Site Settings (site set) | Site Management → Sites → Settings, or config/sites/<id>/settings.yaml | One site |
| Privacy Layer Settings | List module → Privacy Layer Settings | Site-wide external-service consent copy |
| Player (content element) | Page module → VidPly Player CE | One player instance on a page |
| Media record | List module → VidPly Media | Reusable item (any player/listview) |
See also Integrations for mp-core site settings that affect JSON-LD output.
Current Architecture
Extension Configuration (global)
Configured in Admin → Settings → Extension Configuration → mpc_vidply (ext_conf_template.txt):
| Setting | Type | Default | Description |
|---|---|---|---|
allowedVideoDomains | string | (empty) | Allow-list for external video URLs (comma/newline; wildcards supported) |
allowedAudioDomains | string | (empty) | Allow-list for external audio URLs |
playIcon | string | (empty) | Custom play-button image: EXT:… path, site-relative path, or HTTPS URL |
allowedPlayIconDomains | string | (empty) | Allow-list for external play-icon URLs (required when using HTTPS icons) |
playPosition | select | center | Play overlay position: center, corners |
useCssIcons | bool | 0 | Use CSS-based control-bar icons (enables theming via CSS variables) |
theme | select | dark | Player chrome: dark or light |
themeSyncEnabled | bool | 0 | Sync player theme with page light/dark mode (body class + custom events) |
These apply to every frontend player unless overridden in Fluid/TypoScript.
Site Settings (per site)
Declared by the mpc/mpc-vidply site set
(Configuration/Sets/mpc-vidply/settings.definitions.yaml). Editors and
integrators change them in Site Management → Sites → your site →
Settings → VidPly Player (screen reader announcements are in the
Accessibility subcategory); integrators can also write them to
config/sites/<id>/settings.yaml or read them in TypoScript as constants.
| Setting | Type | Default | Description |
|---|---|---|---|
mpcVidply.screenReaderAnnouncements | bool | true | Announce play/pause, volume, mute, captions, fullscreen and speed changes in the player's live region |
mpcVidply.resumePlayback | bool | false | Remember playback position and offer to resume on the next visit (content elements can override) |
mpcVidply.embedChrome | vidply | provider | vidply | Controls for YouTube and Vimeo — see below |
# config/sites/<id>/settings.yaml
mpcVidply.screenReaderAnnouncements: false
mpcVidply.resumePlayback: true
mpcVidply.embedChrome: provider
# available as TypoScript constants
{$mpcVidply.screenReaderAnnouncements}
{$mpcVidply.resumePlayback}
{$mpcVidply.embedChrome}
Turning the announcements off silences the status messages the player sends to assistive technology (WCAG 4.1.3). Only do that when something else on the page already announces the same state — the player's own notices (help dialog, sign-language drag and resize hints) keep speaking either way, since they are the only feedback for the action that triggered them.
Controls for YouTube and Vimeo (mpcVidply.embedChrome)
Decides who draws the player for YouTube and Vimeo after the visitor has accepted the privacy notice. The privacy overlay itself is the same in both modes — nothing is requested from YouTube or Vimeo before consent.
| Value | Single YouTube / Vimeo item | YouTube / Vimeo tracks in a playlist |
|---|---|---|
vidply (default) | Plays inside the VidPly player: VidPly control bar, keyboard shortcuts, sidecar captions, chapters and transcript from the media record's Captions tab | Same — the VidPly controls stay visible for embed tracks |
provider | The privacy layer mounts the provider's own embed (previous behaviour); VidPly captions and transcript are not shown | VidPly controls are hidden while an embed track plays; the provider's controls are used |
SoundCloud is not affected: it always uses its own widget (see
PrivacyLayer → Switch SoundCloud to Renderer Mode).
YouTube's own captions are never shown in vidply mode; add WebVTT files to
the media record instead.
The setting is passed to the player as the embedChrome option by
PlayerOptionsBuilder. vidply loads the VidPly core for single YouTube and
Vimeo items as well (see AssetLoading); provider keeps
those pages on the lighter privacy-layer-only path.
Privacy Layer Settings (tx_mpcvidply_privacy_settings)
Site-wide settings for external service privacy layers:
| Setting | Type | Description |
|---|---|---|
| Headline | String | Optional headline above privacy text |
| Intro Text | Text | Text before privacy policy link |
| Outro Text | Text | Text after privacy policy link |
| Policy Link | String | URL to privacy policy page |
| Link Text | String | Text for privacy policy link |
| Button Label | String | Accessible label for play button |
Available for YouTube, Vimeo, and SoundCloud. Supports multilingual content via sys_language_uid. Empty fields fall back to language file translations.
Player Settings (tt_content)
Global settings that apply to entire player instance:
| Setting | Type | Default | Description |
|---|---|---|---|
| Layout | select | default | default, episode, or episodes (episode card layouts) |
| Playlist position | select | below | In-player playlist panel: below or right (desktop; mobile always below). Ignored for Episode card with episode list |
| Options | Bitmask | 328 | Player features (see below) |
| Resume from last position | toggle | Off | Per-element override of site-wide resume playback |
| Show track info | toggle | On | In-player now-playing header for single items |
| Volume | Float | 0.8 | Initial volume (0-1) |
| Playback Speed | Float | 1.0 | Initial speed (0.25-2x) |
| Language | String | Auto | UI language |
Player Options (Bitmask)
| Bit | Value | Option | Default |
|---|---|---|---|
| 0 | 1 | Autoplay | Off |
| 1 | 2 | Loop | Off |
| 2 | 4 | Muted | Off |
| 3 | 8 | Controls | On |
| 4 | 16 | Captions Default | Off |
| 5 | 64 | Keyboard | On |
| 6 | 256 | Auto Advance | On |
Default: 8 + 64 + 256 = 328
Notes:
- Responsive sizing is always enabled (no toggle).
- Transcript is controlled per media record (
tx_mpcvidply_media.enable_transcript). The transcript UI is available if at least one selected item enables it.
Media Item Settings (tx_mpcvidply_media)
Per-item settings specific to each media record:
| Setting | Description |
|---|---|
| Media Type | video, audio, youtube, vimeo, soundcloud |
| Media File/URL | Source file or URL |
| Title | Track title |
| Slug | URL slug for listview detail routing (auto from title) |
| Artist | Creator/artist name |
| Description | Short text (list cards, player) |
| Long description | RTE copy for the detail page and the episode card's disclosure |
| Duration | Length in seconds |
| Poster | Thumbnail image |
| Categories | TYPO3 categories (listview chips + category-based rows) |
| Captions | WebVTT / SRT caption files |
| Chapters | WebVTT / SRT chapter files |
| Enable Transcript | Per-track transcript flag |
| Audio Description | Described video (MP4/WebM swap) or VTT speech via audio_description_mode |
| Audio Description Mode | auto | swap | vtt_speech — delivery path for spoken AD |
| Sign Language | Sign language overlay video |
| Hide speed button | Hide playback-speed control for this item (per-track in playlists) |
| Hide keyboard shortcuts help | Hide help button for this item (per-track in playlists) |
| Allow download | Show download button (uses progressive source when available) |
| Enable floating player | Custom draggable PiP window (single-item players only) |
Best Practices
Extension Configuration (Installation-Wide)
Use for branding and security defaults that should not vary per page:
- Allowed external media domains
- Default dark/light theme and page theme sync
- Custom play icon for privacy overlay and player
- CSS icon mode for design-system integration
Site Settings (Per Site)
Use for policies that differ between the sites of one installation:
- Whether the player announces its state to screen readers
- Whether visitors are offered resume playback by default
- Whether YouTube and Vimeo play inside the VidPly player or in the provider's own player
Privacy Layer Settings (Site-Wide)
Use for settings that should be consistent across all external services:
- Privacy notice texts
- Policy links
- Button labels
- Multilingual translations
Player-Level (Global)
Use for settings that should be consistent across all tracks:
- UI behavior (controls, keyboard)
- Initial state (volume, speed)
- Playlist behavior (auto-advance)
Media-Level (Per-Item)
Use for settings that are specific to content:
- Source files/URLs and slug
- Metadata (title, artist, descriptions, categories)
- Accessibility features (captions, chapters, AD, sign language)
- Visual elements (poster)
- Per-item UI toggles (download, floating player, hide speed/help)
Rationale
This separation provides:
- Consistency - Same privacy layer UX across all external services
- Centralization - Privacy texts managed in one place
- Multilingual - Privacy settings can be translated per language
- Flexibility - Per-item content customization
- Maintainability - Clear distinction between site-wide/global/local settings
- Reusability - Media items work in different contexts