Search the FirstSpirit Knowledge Base
Hallo Community,
wir stellen gerade von FS Version 5.1 auf Version 5.2 um.
Derzeit prüfe ich in einer Formatvorlage ob eine Strukturvariable gesetzt ist.
referencedPageRef.target.parent.data.get("fs_portal_mergeID").isEmpty
Diese Methode ist in der Version 5.2 als deprecated gekennzeichnet.
Habe es nun versucht folgendermaßen umzustellen.
referencedPageRef.target.parent.getFormData().get(#global.language, "fs_portal_mergeID").isSet()
Jetzt bekomme ich aber Fehler wenn die Strukturvariable nicht gesetzt ist.
ERROR ($CMS_VALUE(referencedPageRef.target.parent.getFormData().get(#global.language, "fs_portal_mergeID").isSet())$ at 5, 2): fs_portal_mergeID
Wie kann man prüfen, ob Strukturvariablen gesetzt sind oder nicht?
Viele Grüße
Timo
Hallo Timo,
vielleicht verstehe ich die Anforderung nicht richtig, aber du kannst von einer Formatvorlage aus, ja trotzdem die UID der Strukturseite holen und von dort aus dann hoch interieren:
$CMS_SET(setUid, #global.node.uid)$
$CMS_SET(setVariable, "ssNewsRoot")$
$CMS_SET(ref,ref(pageref:setUid).target)$
$CMS_SET(result,"")$
$CMS_FOR(count,[1..ref(pageref:setUid).target.depth])$
$CMS_IF((result=="") && !(ref.parent.data.get(setVariable).editor.get(#global.language).isEmpty))$
$CMS_SET(result,ref.parent.data.get(setVariable).editor.get(#global.language))$
$CMS_END_IF$
$CMS_SET(ref,ref.parent)$
$CMS_END_FOR$
$CMS_VALUE(#global.logInfo("result: "+result))$
LG Thomas
Hi Timo,
wenn du es in der Navigationsfunktion brauchst, kannst du es so machen:
#nav.data("ss_varname")
Solltest du es wo anderst auslesen wollen, musst du beachten, dass du solange nach oben iterieren muss (getParent) bis du den Ordner gefunden hast, wo sie tatsächlich gesetzt ist. Eine vererbte Strukturvariable kann nicht ausgelesen werden.
siehe auch: https://community.e-spirit.com/message/26557#26557
lg thomas
Hallo Timo,
ist diese Frage noch offen? Benötigst du noch weitere Hilfe oder konnte Thomas dir bereits weiterhelfen?
In diesem Fall wäre es super, wenn du seine "richtige Antwort" entsprechend markierst.
Solltest du selbst eine Lösung gefunden haben, wäre es toll, wenn du sie hier bereitstellst.
Viele Grüße,
Sebastian
Hallo Sebastian,
leider hilft mir die Antwort von Thomas nicht weiter.
Da ich in einer Formatvorlage nicht weiß auf welcher Ebene ich mich befinde, kann ich auch nicht nach oben iterieren.
Geht das echt nicht anders?
Hallo Timo,
vielleicht verstehe ich die Anforderung nicht richtig, aber du kannst von einer Formatvorlage aus, ja trotzdem die UID der Strukturseite holen und von dort aus dann hoch interieren:
$CMS_SET(setUid, #global.node.uid)$
$CMS_SET(setVariable, "ssNewsRoot")$
$CMS_SET(ref,ref(pageref:setUid).target)$
$CMS_SET(result,"")$
$CMS_FOR(count,[1..ref(pageref:setUid).target.depth])$
$CMS_IF((result=="") && !(ref.parent.data.get(setVariable).editor.get(#global.language).isEmpty))$
$CMS_SET(result,ref.parent.data.get(setVariable).editor.get(#global.language))$
$CMS_END_IF$
$CMS_SET(ref,ref.parent)$
$CMS_END_FOR$
$CMS_VALUE(#global.logInfo("result: "+result))$
LG Thomas