Hallo Fabian,
der eigene Aufbau der URLs gemäß der Ordnerstruktur in FS hat einen grundsätzlichen entscheidenden Nachteil: Du arbeitest hier am URL-Erzeugungsmechanismus vorbei bzw. baust ihn nach. Die Logik, welche URL (bzw. streng genommen welchen Pfad) ein Element erhält, sollte immer nur genau an einer Stelle vorhanden sein, nämlich in der Implementierung der jew. UrlFactory in Verbindung mit der Auswahl der verwendeten UrlFactory in den einzelnen Generierungsaufträgen. Alles andere wäre eine potentielle Fehlerquelle, da bei Nutzung einer anderen UrlFactory bzw. Änderung ihrer Implementierung dies immer nachgezogen werden müsste.
Von daher wäre mein Vorschlag, sich im Template einfach das erste Medium des referenzierten Ordners zu holen, zu referenzieren und aus dem Ergebnis den Pfad zu extrahieren. Wenn die FS_REFERENCE den Namen "st_folder" hat, z.B. so:
$CMS_SET(set_mediaUrl,ref(st_folder.get().getChildren(class("de.espirit.firstspirit.access.store.mediastore.Media")).first, abs:2).url)$
$CMS_SET(set_folderPath, set_mediaUrl.substring(0,set_mediaUrl.lastIndexOf("/")))$
$CMS_VALUE(set_folderPath)$
Je nach verwendeter UrlFactory bist Du streng genommen nichtmal hier auf der sicheren Seite. Falls ihr nämlich storedUrls verwendet und jemand ein Medium zu dem es schon eine storedUrl gibt, in einen Galerieordner verschiebt, wird das Bild (wegen der StoredUrl) in einen anderen Ordner generiert als seine Nachbarn.
Von daher wäre es wahrscheinlich sogar besser, alle URLs separat zu ermitteln und in eine Variable (JS oder PHP) zu schreiben, in etwa so:
Media paths:
<ul>
$CMS_FOR(for_media,st_folder.get().getChildren(class("de.espirit.firstspirit.access.store.mediastore.Media")))$
<li>$CMS_REF(for_media, abs:2)$</li>
$CMS_END_FOR$
</ul>
Alternativ direkt passend in eine Liste:
$CMS_VALUE(st_folder.get()
.getChildren(class("de.espirit.firstspirit.access.store.mediastore.Media"))
.toList
.map(media->ref(media, abs:2).url)
.toJSON()
)$
Diese Infos (also die einzelnen Pfade) könnten dann dem PHP übergeben werden - das PHP nur auf einem Ordner arbeiten zu lassen ist aus den o.g. Gründen (storedUrls + Verschieben) fehleranfällig. Selbst falls ihr aktuell keine StoredUrls nutzt, wäre mir das zu heikel - wenn das in ein paar Monaten / Jahren mal geändert wird, funktioniert es nicht mehr und dann geht die Sucherei nach dem Fehler los 😉
Wichtig ist jeweils die Verwendung von abs:2, da Du ja absolute URLs erzeugen willst aber ohne den ggf. im Generierungstask eingetragenen Präfix.
Hinweis: Du müsstest letztlich sowieso dafür sorgen, dass alle entsprechenden Bilder im Ordner einmal per $CMS_REF referenziert werden - sonst würden sie bei der Generierung nämlich gar nicht erzeugt. Dieses Problem hast Du mit der zweiten Variante automatisch gelöst.
Viele Grüße
Michael