srhinow / download-bundle
this extension manage download-list
Package info
gitlab.com/srhinow/download-bundle
Type:contao-bundle
pkg:composer/srhinow/download-bundle
Requires
- php: >=8.3
- ext-json: *
- contao/core-bundle: ^5.3
- srhinow/contao-tags: ^5.0.6
- symfony/form: ^7.2
Requires (Dev)
- phpunit/phpunit: ^11.5
This package is auto-updated.
Last update: 2026-05-13 19:58:17 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ängigkeit | Version |
|---|---|
| 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).
| Feld | Beschreibung |
|---|---|
| Name | Bezeichnung der Kategorie (Pflichtfeld, max. 255 Zeichen) |
| Alias | URL-freundlicher Bezeichner (automatisch generiert) |
Sortierung (sorting) | Numerische Sortierreihenfolge |
Downloads (tl_downloads)
Hauptverwaltung aller Download-Einträge.
| Feld | Beschreibung |
|---|---|
| Name | Bezeichnung des Downloads (Pflichtfeld, max. 255 Zeichen) |
| Alias | URL-Alias (automatisch generiert, alphanumerisch + Underscore) |
| Kategorie | Zugeordnete Kategorien (Mehrfachauswahl, Pflichtfeld) |
| Datei | Datei 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) |
| Tags | Tag-Auswahl via srhinow/contao-tags |
| Text | Beschreibungstext (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.
| Feld | Beschreibung |
|---|---|
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-Template | Item-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.
| Feld | Beschreibung |
|---|---|
| Download-Template | Item-Template für die Detailausgabe |
download_search — Download-Suche
Stellt ein Suchformular zur Volltextsuche in Downloads bereit.
| Feld | Beschreibung |
|---|---|
| Download-Template | Item-Template für die Suchergebnis-Ausgabe |
download_filter — Download-Filter
Kategorie-Filterformular — stellt Filter-Links zur Kategorieauswahl bereit.
| Feld | Beschreibung |
|---|---|
Sprungseite (jumpTo) | Seite mit der gefilterten Download-Liste |
Insert-Tags
| Insert-Tag | Beschreibung |
|---|---|
{{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
| Spalte | Typ | Beschreibung |
|---|---|---|
id | int(10) unsigned PK AI | Primärschlüssel |
pid | int(10) unsigned | Elternkategorie (0 = Root) |
sorting | int(10) unsigned | Sortierung |
tstamp | int(10) unsigned | Zeitstempel letzte Änderung |
modify | int(10) unsigned | Reservierter Änderungstimestamp |
name | varchar(255) | Kategoriename |
alias | varchar(128) | URL-Alias |
tl_downloads
| Spalte | Typ | Beschreibung |
|---|---|---|
id | int(10) unsigned PK AI | Primärschlüssel |
tstamp | int(10) unsigned | Zeitstempel letzte Änderung |
modify | int(10) unsigned | Reservierter Änderungstimestamp |
sorting | int(10) unsigned | Sortierung |
name | varchar(255) | Download-Bezeichnung |
alias | varchar(128) | URL-Alias |
category | blob NULL | Zugeordnete Kategorien (serialisiert) |
file | binary(16) NULL | Datei-UUID aus tl_files |
dl_url | varchar(255) | Optionale externe Datei-URL |
tags | char(1) | Tag-Zuordnung (via contao-tags) |
text | text NULL | Beschreibungstext (HTML) |
direct_link | char(1) | Direkt-Link zur Datei |
addImage | char(1) | Vorschaubild aktiv |
singleSRC | binary(16) NULL | Vorschaubild-UUID aus tl_files |
published | boolean | Veröffentlicht |
pageTitle | varchar(255) | SEO-Seitentitel |
description | text NULL | SEO-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 Rhinow — sr-tag.de
Support: kservice@sr-tag.de
Quellcode: gitlab.com/srhinow/download-bundle