Auflistung aller Datei Refferenzen .getIncomingReferences
Author: Bratzell
Publication Date: 7/7/2017 8:30
Hallo zusammen,
ist es möglich herauszufinden auf welchen Seiten eine Datei genutz wird?
Ich habe unterm Text meinen Code angegeben und es dort mit $CMS_VALUE(for_media.getIncomingReferences)$ versucht.
Die anzeige in der Preview ist jedoch nich so wie es gerne hätte.
Ändert sich das beim Staging oder muss ich eine andere Lösung finden.
Das ganze ist Teil einer CSV-Tabelle erstellt als Page-Template zu der ich hier schon mal Fragen gestellt habe.
$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|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_VALUE(for_media.getIncomingReferences)$|$CMS_REF(for_media)$|$CMS_VALUE(set_file.getSize() + "|")$$CMS_VALUE(set_file.getCrc())$
$CMS_END_TRIM$
$CMS_END_IF$
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_TRIM$
Grüße
Artur
-
Author: mbergmann - 7/8/2017 0:21
Hallo Artur,
das Ganze ist leider etwas komplexer. Das .getIncomingReferences() liefert erstmal eine Liste (bzw. Array) von ReferenceEntries. Darüber kommst Du jeweils über getReferencedElement() an das Objekt von dem die Referenz ausgeht.
Das kann allerdings alles mögliche sein, insbesondere ist es normalerweise keine Seitenreferenz sondern eher eine Page oder eine Section oder ein Datensatz (theoretisch kann es noch mehr sein wie eine globale Inhaltsseite, ein Ordner in der Inhalts- oder Strukturverwaltung (über Metadaten) usw., aber eher unwahrscheinlich - kommt aufs Projekt an).
D.h. ab hier musst Du eine Fallunterscheidung machen. Z.B. von einer Section erst zur Page laufen.
Zur Page müsstest Du dann (wieder über getIncomingReferences()) alle ( ! ) Seitenreferenzen finden - erst DIE haben ja eine URL.
Für Datensätze wird es noch komplizierter...
Viele Grüße
Michael
0
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Kommentare
1 Kommentar