srhinow/contao-page-images-bundle

Set one or more images central per page in Contao CMS. This is a Fork from 'Ruudt/contao-page_images' and updated for >=Contao 5.3 and >=PHP 8.3

Maintainers

Package info

gitlab.com/srhinow/contao-page-images-bundle

Issues

Type:contao-module

pkg:composer/srhinow/contao-page-images-bundle

Statistics

Installs: 1 825

Dependents: 1

Suggesters: 0

Stars: 0

3.0.5 2026-05-13 21:57 UTC

This package is auto-updated.

Last update: 2026-05-13 19:57:29 UTC


README

Zentrale Verwaltung von Seitenbildern für Contao CMS. Bilder werden einmalig im Backend konfiguriert und automatisch an Unterseiten vererbt — bis eine Seite eine eigene Zuweisung besitzt oder die Vererbung explizit gesperrt wird.

Fork von Ruudt/contao-page_images, neu geschrieben für Contao 5.3+ und PHP 8.3+.

Anforderungen

AbhängigkeitVersion
PHP^8.3
Contao Core Bundle^5.3

Installation

composer require srhinow/contao-page-images-bundle

Nach der Installation die Datenbank-Migration ausführen:

php bin/console contao:migrate

Datenhierarchie

tl_pageimages              Bild-Kategorien (z. B. „Header", „Teaser-Bild")
└── tl_pageimages_items    Konkrete Bildzuweisungen mit Seitenliste
    └── tl_pageimages_pages  Verknüpfungstabelle: Item ↔ Seiten-ID

Backend

Das Bundle fügt unter Inhalte → Seitenbilder (do=page_images) ein Backend-Modul hinzu.

Bild-Kategorien (tl_pageimages)

Jede Kategorie definiert einen „Slot" im Layout, in dem Seitenbilder angezeigt werden.

FeldBeschreibung
NameEindeutiger interner Name der Kategorie (Pflichtfeld)
Bildquellen (multiSRC)Standard-Bilder für diesen Slot (Fallback, wenn keine Seiten-Zuweisung greift)
Alt-Text (alt)Standard-Alt-Text für alle Bilder dieser Kategorie
Bildgröße (size)Contao Image-Size für die Ausgabe

Bildeinträge (tl_pageimages_items)

Kindeinträge einer Kategorie. Jedem Eintrag werden konkrete Seiten zugeordnet.

FeldBeschreibung
Bildquellen (multiSRC)Bilder für diesen Eintrag (Pflichtfeld)
Seiten (pages)Seiten, auf denen dieser Eintrag angezeigt wird (Pflichtfeld, Seitenbaum-Auswahl)
Beschriftung anzeigen (showText)Checkbox: Klappt das Textfeld auf
Text (text)Optionaler HTML-Text (TinyMCE-Editor), der zusammen mit dem Bild ausgegeben wird
Vererbung sperren (noInheritance)Checkbox: Verhindert, dass dieser Eintrag an Unterseiten weitergegeben wird

Vererbungslogik

Beim Rendern des Frontend-Moduls sucht PageImagesService ein Bild für die aktuelle Seite:

  1. Prüfe ob ein Eintrag direkt der aktuellen Seite zugeordnet ist.
  2. Falls nicht: Gehe zur Elternseite — außer ein Eintrag auf dem Weg hat „Vererbung sperren" aktiviert.
  3. Falls kein Eintrag im Seitenbaum gefunden: Nutze das Standard-Bild der Kategorie (tl_pageimages.multiSRC).

Frontend-Modul

Modultyp: page_images — „Seitenbilder" (Gruppe: Seitenbilder)

FeldBeschreibung
Seitenbilder-Kategorie (pageimages)Welche Kategorie dargestellt wird (Pflichtfeld, Radio-Auswahl)
Seitenbilder-Template (pageimages_layout)Template für die Ausgabe (alle Templates mit Präfix pageimages_)
Anzahl der Bilder (image_count)1 = erstes Bild, 0 = alle, N = die ersten N Bilder
useCaptionBildunterschrift anzeigen
fullsizeLightbox-Link aktivieren

Templates

mod_page_images.html.twig

Modul-Wrapper. Rendert das Bild-Template, wenn ein Seitenbild vorhanden ist.

VariableTypBeschreibung
has_pageimagebooltrue wenn ein Bild für die aktuelle Seite gefunden wurde
pageimagestringGerendertes HTML des Bild-Templates

pageimages_default.html.twig

Rendert die Bilder mit optionalem Textoverlay. Nutzt die Twig-Funktion contao_figure().

VariableTypBeschreibung
imagesarrayArray von Bild-Datensätzen (UUID + Größe aus der Kategorie)
textstringOptionaler Text-Overlay (HTML)
showTextboolText-Overlay aktiv?

Eigene Templates müssen mit dem Präfix pageimages_ beginnen, damit sie im Backend-Dropdown erscheinen.

Hook

Der compilePageImages-Hook feuert nach der Bildauflösung und erlaubt projektspezifische Nachbearbeitung:

$GLOBALS['TL_HOOKS']['compilePageImages'][] = [MyClass::class, 'myMethod'];

Signatur: myMethod(Template $template, array $pageImages, ModuleModel $model): void

Benutzerrechte

Zwei Berechtigungsschlüssel werden für Backend-Benutzer und -Gruppen registriert:

SchlüsselBeschreibung
pageimages_categoriesAuf welche Kategorien der Benutzer zugreifen darf
pageimages_categoriespErlaubte Operationen: create, delete

Datenbankstruktur

tl_pageimages

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
sortingint(10) unsignedSortierung
tstampint(10) unsignedZeitstempel letzte Änderung
namevarchar(200)Kategoriename
altvarchar(200)Standard-Alt-Text
sizevarchar(64)Bildgröße-Konfiguration
multiSRCblob NULLStandard-Bildquellen (serialisierte UUIDs)

tl_pageimages_items

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
pidint(10) unsignedElternkategorie (tl_pageimages.id)
sortingint(10) unsignedSortierung
tstampint(10) unsignedZeitstempel
multiSRCblob NULLBildquellen (serialisierte UUIDs)
showTextbooleanText anzeigen
textblob NULLOptionaler HTML-Text
noInheritancechar(1)Vererbung sperren

tl_pageimages_pages

Verknüpfungstabelle: Welche Seiten ein tl_pageimages_items-Eintrag abdeckt.

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
pidint(10) unsignedElterneintrag (tl_pageimages_items.id)
sortingint(10) unsignedSortierung
tstampint(10) unsignedZeitstempel
pageIdint(10) unsignedSeiten-ID (tl_page.id)

Tests ausführen

vendor/bin/phpunit -c vendor/srhinow/contao-page-images-bundle/phpunit.xml.dist

Changelog

Siehe CHANGELOG.md für die vollständige Versionshistorie.

Lizenz

GPL-3.0-or-later

Autoren

Ruud Walraven (Ursprungsautor)
Sven Rhinowsr-tag.de
Support: kservice@sr-tag.de
Quellcode: gitlab.com/srhinow/contao-page-images-bundle