Search the FirstSpirit Knowledge Base
Hallo zusammen,
ist es möglich herauszufinden wo eine Datei genutzt wird?
Das ganze ist Teil einer CSV-Tabelle erstellt als Page-Template zu der ich hier schon mal Fragen gestellt habe.
Über das $CMS_VALUE(for_media.getId() + " ")$ erhalte ich eine passende ID solange es sich um etwas im Page Content handelt.
Falls die Datei in den Datenquellen referenziert wird mir -1 ausgegeben und falls die Datei gar nicht referenziert ist Garnichts.
Die -1 stört mich wie komme ich an die passende ID der Datenquelle?
$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|Dateigroesse|Seitenrefferenz|CRC
$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_FOR(for_media, for_media.getIncomingReferences())$
$CMS_VALUE(for_media.getId() + " ")$
$CMS_END_FOR$|
$CMS_VALUE(set_file.getCrc())$
$CMS_END_TRIM$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_TRIM$
Grüße
Artur
Hallo Michael,
Danke für eure Hilfe hierzu Michael und Peter.
Tut mir Leid für die späte Antwort, ich war im Urlaub ;-).
Ich hab ganze jetzt so gelöst das ich nicht den Seitenpfad genommen hab sondern den Strukturpfad.
Hier mal der spezifischen Code:
$CMS_FOR(for_media_item, for_media.getIncomingReferences())$
$CMS_IF(for_media_item.getId() == -1)$
$CMS_SET(media_value_1, for_media_item.getReferencedElement.getId())$
$CMS_VALUE(media_value_1 + " ")$
$CMS_ELSE$
$CMS_SET(media_value_2, for_media_item.getReferencedObject())$
$CMS_SET(media_parent_1, media_value_2.getParent())$
$CMS_SET(media_parent_2, media_parent_1.getParent())$
$CMS_FOR(media_site_1, media_parent_2.getIncomingReferences())$
$CMS_SET(media_site_2, media_site_1.getReferencedObject())$
$CMS_REF(media_site_2)$
$CMS_END_FOR$
$CMS_END_IF$
$CMS_END_FOR$
Mit freundlichen Grüßen
Artur
Du kannst abhängig vom Typ der eingehenden Referenz eine Fallunterscheidung machen. Bei Content-Referenzen bekommst du über "getReferencedElement" üblicherweise an den Datenquellen-Knoten (wenn es keine Datenquelle für den Datensatz gibt, liefert dies den Knoten für die Tabellen-Vorlage).
Off Topic: Die zwei "FOR"-Schleifen mit gleicher Laufvariable finde ich sehr verwirrend
Hallo Peter,
Danke dir ich habs jetzt so gemacht:
$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|Dateigroesse|Seitenrefferenz|CRC
$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_FOR(for_media_item, for_media.getIncomingReferences())$
$CMS_IF(for_media_item.getId() == -1)$
$CMS_SET(media_value_1, for_media_item.getReferencedElement.getId())$
$CMS_VALUE(media_value_1 + " ")$
$CMS_ELSE$
$CMS_SET(media_value_2, for_media_item.getId())$
$CMS_VALUE(#global.root.media_value_2)$
$CMS_END_IF$
$CMS_END_FOR$|
$CMS_VALUE(set_file.getCrc())$
$CMS_END_TRIM$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_TRIM$
Grüße
Artur
Hallo Artur,
ich glaube, Du brauchst die Fallunterscheidung nicht unbedingt. Es sollte reichen, einfach IMMER die Variante mit .getReferencedElement() zu nehmen.
Kleiner Hinweis (s. auch Peters Kommentar): Im Fall von Datensätzen bekommst Du soweit ich mich erinnere ggf. nicht die ID des Datensatzes sondern die der Datenquelle.
Viele Grüße
Michael
Hallo Michael,
Danke für eure Hilfe hierzu Michael und Peter.
Tut mir Leid für die späte Antwort, ich war im Urlaub ;-).
Ich hab ganze jetzt so gelöst das ich nicht den Seitenpfad genommen hab sondern den Strukturpfad.
Hier mal der spezifischen Code:
$CMS_FOR(for_media_item, for_media.getIncomingReferences())$
$CMS_IF(for_media_item.getId() == -1)$
$CMS_SET(media_value_1, for_media_item.getReferencedElement.getId())$
$CMS_VALUE(media_value_1 + " ")$
$CMS_ELSE$
$CMS_SET(media_value_2, for_media_item.getReferencedObject())$
$CMS_SET(media_parent_1, media_value_2.getParent())$
$CMS_SET(media_parent_2, media_parent_1.getParent())$
$CMS_FOR(media_site_1, media_parent_2.getIncomingReferences())$
$CMS_SET(media_site_2, media_site_1.getReferencedObject())$
$CMS_REF(media_site_2)$
$CMS_END_FOR$
$CMS_END_IF$
$CMS_END_FOR$
Mit freundlichen Grüßen
Artur