mscholz3
I'm new here

Einer Seite (page) ohne Referenz Strukturvariabeln verfügbar machen

Jump to solution

Hallo liebe Community,

wie man aus meinen vorherigen Fragen entnehmen kann, arbeiten wir relativ viel mit Strukturvariabeln.

Wenn eine neue Seite erzeugt wird, erhält diese logischerweise nur die Strukturvariabeln, wenn man die Seite in die Struktur referenziert.

Gibt es eine Möglichkeit die Variablen ohne Referenz zu erhalten?  Quasi die Seite vorgaukeln, dass diese bereits in der Struktur hängt. Oder die Strukturvariabeln ohne PageRef setzen.

Liebe Grüße

Marcel

0 Kudos
1 Solution

Accepted Solutions

Hallo Marcel,

Du musst die Variable ja nicht immer weiter reichen. Die Idee war, im Seiten(!)-Template ungefähr sowas zu machen:

$CMS_SET(ss_someVar, if(isSet(ss_someVar),ss_someVar, "my_default"))$

Dadurch gibt es die Variable dann mindestens im Seitenkontext und damit auch in allen anderen - insbesondere in Rendertemplates.

Viele Grüße

Michael

View solution in original post

0 Kudos
6 Replies
mbergmann
Crownpeak employee

Hallo Marcel,

nein, das geht schon rein logisch / prinzipbedingt nicht. Denn eine Inhaltsseite kann ja gerade von verschiedenen Stellen aus der Struktur referenziert werden und je nach dieser Stelle unterschiedliche Werte der Strukturvariablen nutzen. D.h. letztlich bräuchtest du zumindest irgendwoher die Information welche "Stelle" in der Struktur denn für die Werte der Variablen "benutzt" werden soll.

Viele Grüße

Michael

0 Kudos

Hi Michael,

danke für die schnelle Antwort!

Die Stelle bzw. der Ordner ist bei einer bestimmen Seitenvorlage immer gleich, weshalb ich die Werte der Strukturvariabeln für die eine Seitenvorlage gerne als default definieren würde.

Da die Seitenvorlage einige Rendertemplates aufruft, die auch andere Seitentypen nutzen, wäre das setzten von Default-Werten, falls die Strukturvariabeln nicht gefunden werden kann, keine Option.

Liebe Grüße

Marcel

0 Kudos

Hallo Marcel,

Du kannst ja einfach im Seitentemplate schauen ob es die Variable gibt und falls nicht sie einfach setzen. Strukturvariablen sind ja letztlich nur Strings.

Viele Grüße

Michael

0 Kudos

Hi Michael,

wir haben vieles in Rendertemplates ausgelagert. Andere Seitenvorlagen nutzen ebenfalls diese Rendertemplates.

In meinem Fall sollen aber alle Strukturvariablen gesetzt werden, wenn eine bestimmte Seitenvorlage genutzt wird, unabhängig ob sie in der Struktur hängt.

Ein Defaultwert nutzen wir bereits.

Ich könnte natürlich Parameter mit dem gleichen Namen wie die Strukturvariabel beim Aufruf des Rendertemplates übergeben, jedoch nutzen unsere Rendertemplates  viele weitere andere Rendertemplates. Somit müsste ich an viele Stellen ran.

Wenn es nicht geht, muss ich es leider so hinnehmen. Ich habe mir erhofft, dass es hier vielleicht ein Trick gibt, wie beispielsweise meine Idee in der Frage.

Liebe Grüße

Marcel

0 Kudos

Hallo Marcel,

Du musst die Variable ja nicht immer weiter reichen. Die Idee war, im Seiten(!)-Template ungefähr sowas zu machen:

$CMS_SET(ss_someVar, if(isSet(ss_someVar),ss_someVar, "my_default"))$

Dadurch gibt es die Variable dann mindestens im Seitenkontext und damit auch in allen anderen - insbesondere in Rendertemplates.

Viele Grüße

Michael

0 Kudos

Hi Michael,

natürlich! Habe es total vergessen, dass die Render-Templates auch auf Variablen von den genutzten Vorlagen zugreifen können.

Funktioniert Prima:

$CMS_IF(#global.preview)$

     $CMS_SET(ss_available_languages,"DE,EN")$

     $CMS_SET(ss_news_detail_reference,"pageref:news_detail_g_j")$

     .....

$CMS_END_IF$

Vielen Dank! und liebe Grüße

Marcel

0 Kudos