rbitdd
Returning Responder

Strukturvariable von verlinkter Seite auslesen

Jump to solution

Hallo zusammen.

Ich frage mich gerade, ob es möglich ist die Strukturvariable der verlinkten Seite auszulesen.

Sprich in einer Verweisvorlage etwas abzufragen, wie

$CMS_IF(#lt_ref.localvar('hiervariablenname') == "moeglicher wert")$

  mache etwas

$CMS_ELSE$

  mache etwas anderes

$CMS_END_IF$

Ich möchte damit überprüfen, ob die Zielseite einer bestimmten Nutzergruppe zugelassen ist und somit ggf. die Authentisierung (welche per Lightbox Smiley Sad umgesetzt werden soll) zwischenschalten.

Danke schon mal Smiley Happy

0 Kudos
1 Solution

Accepted Solutions
hoebbel
Crownpeak employee

Da fehlt nur ein .editor.get(<gewünschteSprache>), also so:

$CMS_SET(myData,ref.parent.data.get("myVar").editor.get(#global.language))$

Mein {jetzt vorhandener Smiley Wink } Testfall hier lokal, der funktioniert hat (Die IF Abfrage war auch nicht ganz optimal Smiley Sad ]

$CMS_SET(ref,ref(pageref:"permissiontest").target)$
$CMS_SET(myData,"")$
$CMS_FOR(count,[1..ref(pageref:"permissiontest").target.depth])$
$CMS_IF((myData=="") && !(ref.parent.data.get("Hallo").editor.get(#global.language).isEmpty))$
$CMS_SET(myData,ref.parent.data.get("Hallo").editor.get(#global.language))$
$CMS_END_IF$
$CMS_SET(ref,ref.parent)$
$CMS_END_FOR$
VarContent: $CMS_VALUE(myData)$

View solution in original post

0 Kudos
5 Replies
feddersen
Community Manager

Es gib ein API-Beispiel zum Setzen von Strukturvariablen. Als Ausgangspunkt dient ein SiteStoreFolder. Das bekommt man in ihrem Codeschnipsel mit Linkvorlage mit $CMS_VALUE(#lt_ref.parent)$

0 Kudos

Macht es denn hier Sinn, ein Skript dafür zu benutzen. Mit Templatemitteln ist es zwar nicht schön umzusetzen (da man außerhalb der Navigationsfunktion die geerbten Werte nicht auslesen kann), aber folgendermaßen möglich [Annahme: Strukturvariable heißt "myVar" Smiley Wink ]

$CMS_SET(ref,ref(#link.sitestoreref).target)$
$CMS_SET(myData,"")$
$CMS_FOR(folder,[1..ref.depth])$
$CMS_IF((myData=="") && !(ref.parent.data.get("myVar")==""))$
$CMS_SET(myData,ref.parent.data.get("myVar"))$
$CMS_END_IF$
$CMS_SET(ref,ref.parent)$
$CMS_END_FOR$
Ausgabe des geerbten Wertes der Variable myVar: $CMS_VALUE(myData)$<br>

Ich hoffe, ich habe beim Runterschreiben jetzt nicht etwas Wesentliches vergessen. Wenn doch, bitte kurz Bescheid sagen .- ich teste es dann doch mal Smiley Wink

rbitdd
Returning Responder

Hallo Herr Höbbel,

wenn ich mir innerhalt der Schleife den Wert von 'ref.parent.data.get("myVar")' ausgeben lasse, erhalte ich  etwas wie

<CMS_VALUE name="myVar"><LANG id="DE" set="1"><VAR>all</VAR></LANG><LANG id="EN" set="1"><VAR>all</VAR></LANG></CMS_VALUE>


Unabhängig davon, dass das set nicht funktioniert, aber danach kann ich auch selbst tüfteln, hilft mir das schon mal sehr weiter.

Können Sie, gerne auch jemand anderes Smiley Wink, mir noch sagen, wie ich den tatsächlichen Wert der Variablen noch bekomme?

Thanks in advance.

0 Kudos
hoebbel
Crownpeak employee

Da fehlt nur ein .editor.get(<gewünschteSprache>), also so:

$CMS_SET(myData,ref.parent.data.get("myVar").editor.get(#global.language))$

Mein {jetzt vorhandener Smiley Wink } Testfall hier lokal, der funktioniert hat (Die IF Abfrage war auch nicht ganz optimal Smiley Sad ]

$CMS_SET(ref,ref(pageref:"permissiontest").target)$
$CMS_SET(myData,"")$
$CMS_FOR(count,[1..ref(pageref:"permissiontest").target.depth])$
$CMS_IF((myData=="") && !(ref.parent.data.get("Hallo").editor.get(#global.language).isEmpty))$
$CMS_SET(myData,ref.parent.data.get("Hallo").editor.get(#global.language))$
$CMS_END_IF$
$CMS_SET(ref,ref.parent)$
$CMS_END_FOR$
VarContent: $CMS_VALUE(myData)$
0 Kudos
rbitdd
Returning Responder

Hallo Herr Höbbel,

das funktioniert wunderbar! Smiley Happy Danke schön!

Ich habe das

ref(pageref:"permissiontest").target.depth

noch mit

ref.depth

ausgetauscht, damit ich nur einmal die Referenz definieren muss, aber ansonsten, wie bereits gesagt, wunderbar! Smiley Happy

0 Kudos