srhinow/teaser-manager

Teaser-Boxen zentral verwalten für das Contao CMS

Maintainers

Package info

gitlab.com/srhinow/teaser-manager

Issues

Type:contao-bundle

pkg:composer/srhinow/teaser-manager

Statistics

Installs: 198

Dependents: 0

Suggesters: 0

Stars: 0

3.3.4 2026-05-13 21:58 UTC

README

Contao-Bundle zur zentralen Verwaltung von Teaser-Boxen mit Teaser-Gruppen und Kategorien. Inhalte werden einmalig als Teaser angelegt, in Gruppen zusammengefasst und über Seiten-Whitelist oder Seiten-Blacklist gezielt im Frontend ausgespielt.

Anforderungen

AbhängigkeitVersion
PHP^8.3
Contao Core Bundle^5.3

Installation

composer require srhinow/teaser-manager

Nach der Installation die Datenbank-Migration ausführen:

php bin/console contao:migrate

Backend

Das Bundle registriert zwei Backend-Module unter der Gruppe Inhalte:

Teaser (tm_teaser)

Verwaltung einzelner Teaser-Datensätze. Jeder Teaser enthält interne Metadaten (Bezeichnung, Kategorie, Status) und wird über untergeordnete Inhaltselemente (tl_content) mit Inhalten befüllt.

  • Tabellen: tl_teaser, tl_content

Teaser-Gruppen (tm_teaser_group)

Zusammenstellung ausgewählter Teaser zu einer Gruppe sowie Zuweisung an Seiten. Von hier aus können auch die Teaser-Kategorien verwaltet werden.

  • Tabellen: tl_teaser_group, tl_teaser_categories

Datenbankstruktur

tl_teaser

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
tstampint(10) unsignedZeitstempel letzte Änderung
dateAddedint(10) unsignedErstellungsdatum
internTitlevarchar(255)Interne Bezeichnung (Pflichtfeld)
cssIDvarchar(255)CSS-ID und CSS-Klassen
categoryvarchar(25)Kategoriezuordnung (Pflichtfeld)
teaser_templatevarchar(32)Zugewiesenes Template (Standard: tm_teaser_default)
featuredchar(1)Hervorgehoben-Flag
activechar(1)Aktiv/Inaktiv-Status

Indizes: id (PRIMARY), active (INDEX)

tl_teaser_group

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
tstampint(10) unsignedZeitstempel letzte Änderung
dateAddedint(10) unsignedErstellungsdatum
internTitlevarchar(255)Interne Bezeichnung (Pflichtfeld)
inContainervarchar(64)Teaser-Kategorie (→ tl_teaser_categories.name, Pflichtfeld)
teaserblobAusgewählte Teaser-IDs (serialisiert)
custom_pageschar(1)Aktiviert Seiten-Whitelist
pagesblobSeiten-Whitelist (serialisierte Seiten-IDs)
exceptionschar(1)Aktiviert Seiten-Blacklist
exceptions_pagesblobSeiten-Blacklist (serialisierte Seiten-IDs)
featuredchar(1)Hervorgehoben-Flag
activechar(1)Aktiv/Inaktiv-Status

Seitenzuweisungs-Logik:

  • custom_pages = 0: Gruppe wird auf allen Seiten angezeigt.
  • custom_pages = 1: Gruppe wird nur auf den in pages gelisteten Seiten angezeigt.
  • exceptions = 1: Die in exceptions_pages gelisteten Seiten werden ausgeschlossen.

tl_teaser_categories

SpalteTypBeschreibung
idint unsigned PK AIPrimärschlüssel
sortingint unsignedSortierreihenfolge
tstampint unsignedZeitstempel
modifyint unsignedReserviertes Änderungsdatum
namevarchar(255)Kategoriename (Pflichtfeld)
aliasvarchar(128)Alias/Slug

Standard-Kategorien (automatisch bei erster Migration angelegt):

AliasName
sidebarSeitenleiste
msgbarHinweisbereich
main_teaserTeaser im Hauptbereich

Inhaltselemente

tm_teaser_element — Teaser-Element

Wird innerhalb eines Teaser-Datensatzes als Inhaltselement verwendet. Ermöglicht das Befüllen mit Überschrift, Text, Bild und Link.

Zusatzfelder in tl_content:

FeldTypBeschreibung
addTeaserImagebooleanBild aktivieren (klappt Subpalette singleSRC auf)
addLinkbooleanLink aktivieren (klappt url, titleText, target auf)
imgSizevarchar(64)Bildgröße

Template: tm_teaser_element.html.twig

tm_teaser — Einzelner Teaser

Content-Element: Gibt einen per Dropdown ausgewählten Teaser im Frontend aus.

Template: tm_teaser.html.twig

tm_teaser_group — Teaser-Gruppe

Content-Element: Gibt alle Teaser einer ausgewählten Teaser-Gruppe aus.

Template: tm_group.html.twig

Frontend-Modul

teaser_group_module — Teaser-Gruppe

Liest automatisch alle aktiven Teaser-Gruppen der gewählten Kategorie für die aktuelle Seite und rendert diese. Die Whitelist/Blacklist-Seitenzuweisung wird vollautomatisch ausgewertet.

Zusatzfelder in tl_module:

FeldTypBeschreibung
tm_inContainervarchar(64)Teaser-Kategorie (→ tl_teaser_categories.name)
tm_teaser_groupsint(10)Alternative: Direkte Auswahl einer Teaser-Gruppe

Template: tm_group.html.twig

Templates

tm_teaser_element.html.twig

Rendert ein einzelnes Teaser-Inhaltselement.

VariableTypBeschreibung
classstringCSS-Klassen (inkl. featured wenn hervorgehoben)
headlinestringÜberschrift
hlstringÜberschriften-Tag (z. B. h2)
textstringTeaser-Text (HTML, \|raw ausgeben)
addLinkboolLink aktiv?
urlstringLink-URL
titleTextstringLink-Titel (title-Attribut)
targetboolIn neuem Tab öffnen?
addTeaserImageboolBild aktiv?
teaserImagestringGerendertes Bild-HTML (\|raw)

tm_teaser.html.twig

Wrapper für das Content-Element tm_teaser. Gibt {{ teaser | raw }} aus.

tm_group.html.twig

Wrapper für Content-Element tm_teaser_group und das Frontend-Modul. Gibt alle Teaser der Gruppe als {{ teaser | raw }} aus.

Migrationen

PopulateTeaserCategoriesMigration

Legt beim ersten Start die drei Standard-Kategorien in tl_teaser_categories an, sofern die Tabelle leer ist.

TeaserToContentElementMigration

Migriert bestehende Legacy-Teaser-Daten (alte Felder headline, text, image, url, linkTitle direkt in tl_teaser) automatisch in neue tm_teaser_element-Inhaltselemente in tl_content.

Changelog

Alle Änderungen sind in CHANGELOG.md dokumentiert.

Lizenz

LGPL-3.0-or-later

Autor

Sven Rhinowsr-tag.de
Support: kservice@sr-tag.de
Quellcode: gitlab.com/srhinow/teaser-manager