aVogt
Returning Creator

Variablen in am StrukturOrdner

Hallo,

bei einem Ordner in der Struktur kann man Variablen definieren.

Nun habe ich das Problem, dass ich die gesetzte Variable immer nur bei dem Ordner erhalte, bei dem sie auch gesetzt wurde. In den untergeordnete Ordnern steht mir der wert nicht zur Verfügung.

Bsp:

Struktur-Root

     Ordner 1 => Variable nameA = 1

          Ordner 1.1

          Ordner 1.2

     Ordner 2 => Variable nameA = 2

          Ordner 2.1

          Ordner 2.2

Ich bekomme das Ergebnis von Variable nameA nur bei den Ordner 1 und Ordner 2 direkt geliefert.

Werden die Variablen nicht vererbt?

Muss ich immer so lange "nach oben" gehen (parent vom Ordner holen) bis ich ein Ergebnis geliefret bekomme?

7 Replies
rbitdd
Returning Responder

Doch, die Werte sollten vererbt werden.

Sind die Variablennamen in dem Reiter der Unterordner fett? Wenn ja, dann werden an entsprechender Stelle die Werte überschrieben. Das Problem hatten Kollegen von mir schon mal, das er das übersehen hat! Smiley Wink

Wenn nein, dann hört sich das für mich nach einem Fehlverhalten an.

In welcher Version kommt das vor? Dann versuche ich das zu Reproduzieren.

0 Kudos
feddersen
Community Manager

Über $CMS_VALUE(OBJEKT.meta())$ können auch veerbte Informationen ausgegeben werden. Greift man per API auch die Metadaten zu, so ist über hasMeta() zu prüfen, ob am aktuellen Knoten Informationen hinterlegt sind. Falls nicht, muss man sich durch die Vaterkette durchhangeln.

0 Kudos
aVogt
Returning Creator

Wenn ich einen Wert bekomme, sind die Variablen fett, wenn ich keinen Wert bekomme sind die Variablen nicht fett.

Da ich das ganze in einem Script benötige teste ich das DataValue der Variable auf null

pageref.getParentFolder().getData().get("VARIABLENAME");

Falls das null ist hole solange den übergeordneten Ordner und gucke, ob VARIABLENAME nicht null ist

0 Kudos

Hallo Herr Feddersen,

mit hasMeta() bekomme ich immer false. Die Variablen die ich in der Struktur definieren kann, sind doch keine Metadaten oder doch?

Ich definiere die Variablen doch nicht als Metadaten an der Seite. Ich verwende die Variablen bei einem Strukturorder (Struktur->Ordner und da in der rechten fensterhälfte "neue Variable"definieren

0 Kudos

Hallo Herr Vogt,

Sie haben völlig recht, hasMeta() ist hier völlig falsch, da war es gestern wohl schon zu spät. Bei Strukturvariablen gilt das gleiche Prinzip, dort ist nur auf null zu prüfen, wie sie es schon machen. Es gibt auch ein Beispiel, wo das Vorgehen erläutert ist.

Hallo Herr Vogt,

da Sie nicht geschrieben haben, wozu Sie das Skript benötigen, hier die beiden Wege, wie Sie den Variableninhalt auch ohne Hilfe eines Skriptes bekommen:

- In der Navigationsfunktion:

Dort können Sie den Variableninhalt immer direkt mittels #nav.data("Bezeichner") ausgeben {auch geerbte Inhalte}

- Im normalen Templatequelltext geht das nur auf {wie im Skript} durch manuelle Iteration, also zum Beispiel so:

$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$

$CMS_VALUE(myData)$

Viele Grüsse aus Dortmund,

  Holger Höbbel

aVogt
Returning Creator

Hallo Herr Höbbel,

ich brauche das ganze in einer Aktionsvorlage.

Habe es auch schon umgesetzt (Zugriff: .siehe weiter oben) Hatte nur gedacht, dass die Variable immer da ist und dass ich nicht solange nach "oben" gehen muss, bis die gesetzt ist.

Grüße aus DD
A. Vogt

0 Kudos