TimoMeister
Returning Responder

Strukturvariablen via API auslesen

Jump to solution

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

0 Kudos
1 Solution

Accepted Solutions

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

View solution in original post

0 Kudos
4 Replies
thomas_ritter
I'm new here

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

0 Kudos
sebastianc
Crownpeak employee

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

0 Kudos
TimoMeister
Returning Responder

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?

0 Kudos

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

0 Kudos