Bratzell
I'm new here

.getId() gibt -1 für Data Sources zurück

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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

View solution in original post

0 Kudos
4 Replies
Peter_Jodeleit
Crownpeak employee

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 Smiley Wink

Peter
0 Kudos

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

0 Kudos

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

0 Kudos

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

0 Kudos