Bratzell
I'm new here

Relativen Pfad zur Datei in der Medien-Struktur

Jump to solution

Hallo zusammen,

ist es möglich den relativen Pfad zu einer Datei in der Medien-Struktur zu erhalten,

soweit ich mich nicht irre wird das in den Eigenschaften vom Ordner als "UID Path" bezeichnet.

Das ganze ist Teil einer CSV-Tabelle erstellt als Page-Template zu der ich hier schon mal Fragen gestellt habe.

Um genauer zu werden würde ich gerne das mir für Datei.xy folgendes nachher ausgegeben wird:

OrdnerA/OrdnerB/Datei.xy

So sieht die Tabelle aktuelle aus:

$CMS_TRIM(level:3)$

$CMS_SET(set_mediastoreRoot, #global.project.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").MEDIASTORE, !#global.preview))$

Refferenzname|Ablageort|Dateigröße|Seitenrefferenz|MD5-Prüfsumme

$CMS_SET(Media, class("de.espirit.firstspirit.access.store.mediastore.Media"))$

$CMS_FOR(for_media,set_mediastoreRoot.getChildren(Media,true))$

$CMS_IF(for_media.getType()==Media.FILE)$

$CMS_SET(set_file, for_media.getFile(#global.language))$

$CMS_IF(set_file.extension=="pdf")$

$CMS_TRIM(level:4)$

$CMS_VALUE(for_media.uid + "|")$

$CMS_REF(for_media)$|

$CMS_VALUE(set_file.getSize() + "|")$

$CMS_END_TRIM$

$CMS_END_IF$

$CMS_END_IF$

$CMS_END_FOR$

$CMS_END_TRIM$

Das $CMS_REF(for_media)$

Gibt mir eine URL zurück im Preview Modus.

Ist das im Staging dann genauso oder zeigt er mir dann im Staging es so an wie ich es oben beschrieben habe?

Grüße

Artur

0 Kudos
1 Solution

Accepted Solutions
mbergmann
Crownpeak employee

Hallo Artur,

das $CMS_REF(..)$ liefert immer eine URL. Im Fall der Preview ist das eine Art interne technische URL (letztlich weil in der Preview alles über das Preview-Servlet ausgeliefert wird). In der "richtigen" Generierung ist das dann die "normale" URL, also letztlich der Pfad unter dem das Medium erzeugt wird.

In FirstSpirit ist es nun so, dass es verschiedene wählbare Mechanismen zur URL-Erzeugung gibt und sogar komplett eigene implementiert werden können (Stichwort UrlFactory).

EINER der Varianten sind die sog. "DefaultURLs", wo die Pfade anhand der Referenznamen erzeugt werden. Ein anderer sind die AdvancedUrls, die u.A. auf den Anzeigenamen basieren und außerdem - sobald einmal ermittelt - bei späteren Generierungen stabil bleiben (auch wenn das Medium danach verschoben wird).

Wenn ihr DefaultUrls nutzt, reicht das also für Deinen Anwendungsfall.

Für eine allgemeine, vom URL-Erzeugungsmechanismus unabhängige Lösung müsstest Du letztlich im Template vom Medienobjekt in einer Schleife immer weiter mit .getParent() "hochlaufen" und die Informationen der so besuchten Ordner aufsammeln und selbst zu einem Pfad zusammensetzen.

Viele Grüße

Michael

View solution in original post

0 Kudos
2 Replies
mbergmann
Crownpeak employee

Hallo Artur,

das $CMS_REF(..)$ liefert immer eine URL. Im Fall der Preview ist das eine Art interne technische URL (letztlich weil in der Preview alles über das Preview-Servlet ausgeliefert wird). In der "richtigen" Generierung ist das dann die "normale" URL, also letztlich der Pfad unter dem das Medium erzeugt wird.

In FirstSpirit ist es nun so, dass es verschiedene wählbare Mechanismen zur URL-Erzeugung gibt und sogar komplett eigene implementiert werden können (Stichwort UrlFactory).

EINER der Varianten sind die sog. "DefaultURLs", wo die Pfade anhand der Referenznamen erzeugt werden. Ein anderer sind die AdvancedUrls, die u.A. auf den Anzeigenamen basieren und außerdem - sobald einmal ermittelt - bei späteren Generierungen stabil bleiben (auch wenn das Medium danach verschoben wird).

Wenn ihr DefaultUrls nutzt, reicht das also für Deinen Anwendungsfall.

Für eine allgemeine, vom URL-Erzeugungsmechanismus unabhängige Lösung müsstest Du letztlich im Template vom Medienobjekt in einer Schleife immer weiter mit .getParent() "hochlaufen" und die Informationen der so besuchten Ordner aufsammeln und selbst zu einem Pfad zusammensetzen.

Viele Grüße

Michael

0 Kudos

Hallo Michael,

danke für die Hilfe.

Grüße

Artur

0 Kudos