srhinow/download-bundle

this extension manage download-list

Maintainers

Package info

gitlab.com/srhinow/download-bundle

Issues

Type:contao-bundle

pkg:composer/srhinow/download-bundle

Statistics

Installs: 192

Dependents: 0

Suggesters: 0

Stars: 0

2.2.4 2026-05-13 21:57 UTC

README

Contao-Bundle zur zentralen Verwaltung von Downloads mit hierarchischen Kategorien im Backend und vielfältiger Ausgabe im Frontend. Unterstützt Dateianhänge, Vorschaubilder, Tags (srhinow/contao-tags), Volltextsuche, Kategorie-Filter und einen konfigurierbaren Detailseitenlink.

Anforderungen

AbhängigkeitVersion
PHP≥ 8.3
Contao Core Bundle^5.3
srhinow/contao-tags^5.0.6
symfony/form^7.2
ext-json*

Installation

composer require srhinow/download-bundle

Nach der Installation die Datenbank-Migration ausführen:

php bin/console contao:migrate

Backend

Das Bundle fügt unter Inhalte → Downloads (do=downloads) ein Backend-Modul hinzu. Über die globale Operation „Download-Kategorien" gelangt man zur Kategorieverwaltung.

Download-Kategorien (tl_download_categories)

Hierarchische Kategorieverwaltung (Baumstruktur via pid, bis zu 3 Ebenen tief, Sortierung per Drag & Drop).

FeldBeschreibung
NameBezeichnung der Kategorie (Pflichtfeld, max. 255 Zeichen)
AliasURL-freundlicher Bezeichner (automatisch generiert)
Sortierung (sorting)Numerische Sortierreihenfolge

Downloads (tl_downloads)

Hauptverwaltung aller Download-Einträge.

FeldBeschreibung
NameBezeichnung des Downloads (Pflichtfeld, max. 255 Zeichen)
AliasURL-Alias (automatisch generiert, alphanumerisch + Underscore)
KategorieZugeordnete Kategorien (Mehrfachauswahl, Pflichtfeld)
DateiDatei aus der Contao-Dateiverwaltung (Pflichtfeld, Radio-Auswahl)
Bild hinzufügen (addImage)Checkbox: Klappt das Feld „Vorschaubild" auf
Vorschaubild (singleSRC)Optionales Vorschaubild (sichtbar im Backend-Listing als 100×100px-Thumbnail)
TagsTag-Auswahl via srhinow/contao-tags
TextBeschreibungstext (TinyMCE-Editor)
Direkt-Link (direct_link)Checkbox: Link führt direkt zur Datei statt zur Detailseite
Sortierung (sorting)Manuelle numerische Sortierung
Seiten-Titel (pageTitle)SEO-Seitentitel für die Detailansicht
Beschreibung (description)SEO-Meta-Beschreibung
Online sichtbar (published)Veröffentlichungs-Flag

Frontend-Module

Das Bundle registriert vier Frontend-Module in der Gruppe „Downloads":

download_list — Download-Liste

Zeigt veröffentlichte Downloads als gefilterte, durchsuchbare und paginierte Liste.

FeldBeschreibung
Sprungseite (jumpTo)Seite mit dem download_details-Modul für den Detailseitenlink
Dezimalstellen Dateigröße (download_size_decimal)Anzahl der Nachkommastellen bei der Dateigrößenangabe (Standard: 1)
Download-TemplateItem-Template für jeden Listeneintrag (alle Templates mit Präfix download_item_)

download_details — Download-Detailansicht

Zeigt alle Felder eines einzelnen Downloads. Liest den Download-Alias aus der URL.

FeldBeschreibung
Download-TemplateItem-Template für die Detailausgabe

download_search — Download-Suche

Stellt ein Suchformular zur Volltextsuche in Downloads bereit.

FeldBeschreibung
Download-TemplateItem-Template für die Suchergebnis-Ausgabe

download_filter — Download-Filter

Kategorie-Filterformular — stellt Filter-Links zur Kategorieauswahl bereit.

FeldBeschreibung
Sprungseite (jumpTo)Seite mit der gefilterten Download-Liste

Insert-Tags

Insert-TagBeschreibung
{{download::search}}Aktueller Suchwert aus dem POST-Request (Suchformular)
{{download::tag}}Aktuell gesetzter Tag-Filter aus dem POST-Request

Suchindex

Der getSearchablePages-Hook (GetSearchablePagesListener) fügt alle veröffentlichten Downloads dem Contao-Suchindex hinzu, sofern ein download_details-Modul mit einer konfigurierten Sprungseite (jumpTo) vorhanden ist.

parseDownload-Hook

Nach dem Aufbereiten eines Download-Datensatzes feuert der parseDownload-Hook und erlaubt projektspezifische Nachbearbeitung:

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

Datenbankstruktur

tl_download_categories

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
pidint(10) unsignedElternkategorie (0 = Root)
sortingint(10) unsignedSortierung
tstampint(10) unsignedZeitstempel letzte Änderung
modifyint(10) unsignedReservierter Änderungstimestamp
namevarchar(255)Kategoriename
aliasvarchar(128)URL-Alias

tl_downloads

SpalteTypBeschreibung
idint(10) unsigned PK AIPrimärschlüssel
tstampint(10) unsignedZeitstempel letzte Änderung
modifyint(10) unsignedReservierter Änderungstimestamp
sortingint(10) unsignedSortierung
namevarchar(255)Download-Bezeichnung
aliasvarchar(128)URL-Alias
categoryblob NULLZugeordnete Kategorien (serialisiert)
filebinary(16) NULLDatei-UUID aus tl_files
dl_urlvarchar(255)Optionale externe Datei-URL
tagschar(1)Tag-Zuordnung (via contao-tags)
texttext NULLBeschreibungstext (HTML)
direct_linkchar(1)Direkt-Link zur Datei
addImagechar(1)Vorschaubild aktiv
singleSRCbinary(16) NULLVorschaubild-UUID aus tl_files
publishedbooleanVeröffentlicht
pageTitlevarchar(255)SEO-Seitentitel
descriptiontext NULLSEO-Meta-Beschreibung

Templates anpassen

Eigene Item-Templates müssen mit dem Präfix download_item_ beginnen, damit sie im Backend-Dropdown erscheinen. Beispiel: download_item_card.html.twig.

Tests ausführen

vendor/bin/phpunit -c vendor/srhinow/download-bundle/phpunit.xml.dist

Changelog

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

Lizenz

LGPL-3.0-or-later

Autor

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