Downloadliste: Beschreibungen statt Dateinamen verlinken

Eine normale TYPO3 Downloadliste stellt normalerweise eine Liste von Dateien als Tabelle dar, die Dateinamen sind dabei verlinkt und der Beschreibungstext, den man zusätzlich angeben kann, erscheint darunter. Man kann das Rendering der Liste jedoch anpassen, wenn man weiß, was zur Verfügung steht.
Ein Blick in den Quellcode zeigt, dass viele Informationen ins TYPO3-Register geschoben werden, auf das Register kann mit dem Keyword „register:“ per TS zugegriffen werden. Folgende Informationen werden ins Register gespeichert: linkedIcon, linkedLabel, filename, path, description, fileSize, fileExtension
So kann man das Rendering anpassen, damit anstatt Dateinamen die Beschreibung angezeigt wird. Einziger Nachteil dieses Schnipsels: es muss immer eine Beschreibung angegeben werden.

tt_content.uploads.20.itemRendering.20.1 >
tt_content.uploads.20.itemRendering.20.2 >
tt_content.uploads.20.itemRendering.20 {
1 = TEXT
1.value = <p><a href="
2 = TEXT
2.data = register:path
3 = TEXT
3.data = register:filename
4 = TEXT
4.value = ">
5 = TEXT
5.data = register:description
6 = TEXT
6.value = </a></p>
}

EDIT: Mit diesem If-Konstrukt wird anstatt der Beschreibung der Dateiname gerendert, wenn die Beschreibung leer ist (anstelle der 5 einsetzen und die 6 in 7 ändern)

# Beschreibung anzeigen, wenn vorhanden
5 = TEXT
5.data = register:description
5.if.isTrue.data = register:description
 
# ansonsten Dateinamen anzeigen
6 = TEXT
6.data = register:filename
6.if.isTrue.data = register:description
6.if.negate = 1

6 Kommentare

  1. Martin

    Hallo,

    eine kürze Variante:

    #Dateilink
    tt_content.uploads.20.itemRendering.20.1 >
    #Beschreibung
    tt_content.uploads.20.itemRendering.20.2 >
    tt_content.uploads.20.itemRendering.20 {

    2 = TEXT
    2.dataWrap = |
    2.value = {register:filename}
    2.override = {register:description}
    2.override.if.isTrue.data = register:description
    2.insertData = 1

    }

    Viele Grüße

  2. Danke für den Tipp.

    Hier der vollständige Code, kombiniert mit dem Code aus dem Martin’s Kommentar:

    [code]
    # Dateilink
    tt_content.uploads.20.itemRendering.20.1 >
    # Beschreibung
    tt_content.uploads.20.itemRendering.20.2 >
    tt_content.uploads.20.itemRendering.20 {
    1 = TEXT
    1.value =

    ##############################################
    # Beschreibung anzeigen, wenn vorhanden,
    # ansonsten Dateinamen
    ##############################################
    5 = TEXT
    5.dataWrap = |
    5.value = {register:filename}
    5.override = {register:description}
    5.override.if.isTrue.data = register:description
    5.insertData = 1

    7 = TEXT
    7.value =

    }
    [/code]

  3. Hier noch eine kürzere Variante (mit typolink):

    [code]
    # Dateilink: Original löschen
    tt_content.uploads.20.itemRendering.20.1 >
    # Beschreibung: Original löschen
    tt_content.uploads.20.itemRendering.20.2 >
    # Beschreibung: Mit Link neu erstellen
    tt_content.uploads.20.itemRendering.20 {
    1.typolink {
    parameter.dataWrap = {register:path}{register:filename}
    }
    # Beschreibung anzeigen, wenn vorhanden, ansonsten Dateinamen
    1.dataWrap = |
    1.value = {register:filename}
    1.override = {register:description}
    1.override.if.isTrue.data = register:description
    1.insertData = 1
    }
    [/code]

  4. Bevor sich noch jemand einen Wolf sucht: beim allerletzten Beispiel fehlt vor der Zeile
    [code]
    1.typolink {
    [/code]
    noch dieses:
    1 = TEXT

    Also komplett:
    [code]
    # Dateilink: Original löschen
    tt_content.uploads.20.itemRendering.20.1 >
    # Beschreibung: Original löschen
    tt_content.uploads.20.itemRendering.20.2 >
    # Beschreibung: Mit Link neu erstellen
    tt_content.uploads.20.itemRendering.20 {
    1 = TEXT
    1.typolink {
    parameter.dataWrap = {register:path}{register:filename}
    }
    # Beschreibung anzeigen, wenn vorhanden, ansonsten Dateinamen
    1.dataWrap = |
    1.value = {register:filename}
    1.override = {register:description}
    1.override.if.isTrue.data = register:description
    1.insertData = 1
    }
    [/code]

  5. Philipp

    Das hat bei mir nicht funktioniert mit Typo3 v4.7 – folgendes aber:
    [code]
    tt_content.uploads.20.labelStdWrap.override = {register:description}
    tt_content.uploads.20.labelStdWrap.insertData = 1
    tt_content.uploads.20.labelStdWrap.override.if.isTrue.data = register:description
    [/code]

  6. Alex

    hallo und vielen dank für all die nützlichen tipps, habe lange hin und her probiert und nun endlich auch’ne lösung für TYPO3 6.0 gefunden … vielleicht hilft ja auch dies, dem einen oder anderen …

    tt_content.uploads.20 {
    renderObj {
    20.data = file:current:description // file:current:name
    }
    }