Hallo Rolf,
das ist eigentlich ganz normale Template-Logik entsprechend der API bzw. dem ODFS.
Schritt für Schritt läuft das Ganze so ab:
Das for_providedMedia.item ist - wie auch im ODFS erklärt - ein FormData, über das man mit angehängtem Eingabekomponenten-Namen an den Wert des Formularfeldes kommt. Das ist eine Kurzschreibweise, die man im Template nutzen kann anstelle der "reinen" API-Variante, bei der man zwischendurch noch ein FormField bekommt.
Die "reine API-Variante"
for_providedMedia.item.get(#global.language, "lt_target").get()
kann somit im Template abgekürzt werden mit
for_providedMedia.item.lt_target
Das "item" selbst weiß hier noch überhaupt nichts von irgendeiner verlinkten Datei - diese Information steckt ja erst in der FS_REFERENCE "lt_target".
Die Frage ist nun, wie es von hier aus weiter geht. Dazu braucht man erstmal die Info, was für ein Objekt man denn bisher "in der Hand" hat. Dazu hilft ein Blick ins ODFS in der Doku zu (in diesem Fall) "FS_REFERENCE" im grauen Kasten rechts oben - hier ist immer der "innere" Datentyp der jeweiligen Eingabekomponente unter "zu den Methoden" verlinkt bzw. vermerkt. In diesem Fall TargetReference. Das ist somit der Typ von for_providedMedia.item.lt_target.
Folgt man dem Link, findet man darauf im ODFS die Methode .get(), die das eigentlich referenzierte Objekt vom Typ "IDProvider" liefert.
for_providedMedia.item.lt_target.get() //Typ laut API: IDProvider
IDProvider ist nun ein recht allgemeiner Typ. Ab hier kommt man besser mit dem JavaDoc weiter - erstmal beim IDProvider.
In Deinem Fall hast Du - da Du ja ein Medium verlinkt hast - ein Objekt vom Typ Media (Spezialfall bzw. "Sub-Interface" von IDProvider).
Aus einem Media-Objekt bekommt man die Dateiendung nicht "direkt" sondern nur vom konkreten Daten-Objekt innerhalb des Media-Objektes. Das kann entweder ein File oder ein Picture sein - in Deinem Fall (da es kein Bild ist) ein File, das Du mit .getFile(Language language) bekommst.. Hier muss man dann allerdings die Sprache mit angeben, weil die Methode so in der API definiert ist und es hier im Template (erstmal...) keine "Kurzschreibweise" gibt:
for_providedMedia.item.lt_target.get().getFile(#global.language) // Typ: File
Und hier liefert die API zu File dann letztlich die Methode getExtension() - die man wie alle parameterlosen Getter im Template schlicht wie eine öffentliche Property schreiben kann - also einfach extension:
for_providedMedia.item.lt_target.get().getFile(#global.language).extension
Es gibt allerdings in diesem Fall letztlich mit der Funktion ref() eine "Abkürzung", die einem direkt das referenzierte Picture oder File liefert (stimmt technisch nicht zu 100%, läuft aber letztlich in etwa darauf hinaus):
ref(for_providedMedia.item.lt_target).extension
Man kann in diesem Fall also beides nutzen:
$CMS_VALUE(for_providedMedia.item.lt_target.get().getFile(#global.language).extension)$
$CMS_VALUE(ref(for_providedMedia.item.lt_target).extension)$
Ich wollte aber auch mal den allgemeinen Weg aufzeigen, wie man sich generell "an der Doku entlang bewegt", der dann auch bei anderen Eingabekomponenten funktioniert, bei denen man das ref() nicht benutzen kann 😉
Viele Grüße
Michael