Questions & Answers

reger
Returning Observer

CMS_REF auf Variable

Hallo zusammen,

wahrscheinlich stehe ich grade auf dem Schlauch ...

Ich habe ein Modul mit einer  FS_REFERENCE die einen Verweis auf ein Bild enthรคlt. Das Modul ist neben anderen Modulen in einem FS_CATALOG auswรคhlbar. Jetzt iteriere ich รผber die FS_CATALOG-Eintrรคge und brauche die Bildreferenz in einer spรคteren Verarbeitung und setze sie in eine Variable 

$CMS_SET(set_mediapicture, for_section.item.st_pictureBackground)$


in der spรคteren Verarbeitung gehe ich hin und mรถchte die Referenz aus der Variable nutzen:

$CMS_REF(set_mediapicture, res:"MediaTextWide_1x")$

Im generierten Quellcode kommt auch das richtige raus, mein Bild wird angezeigt, also im Prinzip alles gut, aber die Generierung schmeiรŸt den Fehler "invalid target type for $CMS_REF()$: null (Undefined variable 'set_mediapicture')"

Das verwirrt mich doch sehr. Ich habe schon mit ref() rumprobiert, aber leider bekomme ich die Fehlermeldung nicht weg. WeiรŸ jemand Rat?

Viele GrรผรŸe
Gaby Reger

0 Kudos
6 Replies
Schneider
Crownpeak employee

Guten Tag Frau Reger

Der Code sieht korrekt aus, Sie erhalten ja tatsรคchlich auch das richtige Ergebnis.

Eine Idee die mir noch kommt ist, dass das Bild nicht freigegeben sein kรถnnte. Dann wรผrde dieser Fehler kommen, da es im Freigabestand nicht existierte. Allerdings sollte dann im Generat auch kein Bild angezeigt werden.

Beste GrรผรŸe
Lukas Schneider

0 Kudos
reger
Returning Observer

Hallo Lukas,

danke fรผr die Antwort. Das kann es leider nicht sein. Das Bild ist frei gegeben, aber die Test-Generierung lรคuft sowieso รผber nicht frei gegebene Stรคnde. Das ist also nicht relevant.

Viele GrรผรŸe
Gaby Reger

0 Kudos
Schneider
Crownpeak employee

Ansonsten sehe ich gerade, dass Sie geschrieben haben, dass auch andere Absรคtze gewรคhlt werden kรถnnen.
Wird hier im Code auf das entsprechende Template gecheckt? Sonst wird ggfls versucht st_pictureBackground auszulesen, wenn es gar nicht im Form vorhanden ist.
Das kรถnnte auch erklรคren, warum das Bild angezeigt wird, wenn der Eintrag eben vom passenden Typ ist.

0 Kudos
reger
Returning Observer

Hallo Lukas,

das kann ich mir eigentlich nicht vorstellen, ich prรผfe mit

$CMS_IF(for_section.getTemplate.getDisplayName(#global.language) == "Media / Text")$

und setze dann

$CMS_SET(set_mediapicture, for_section.item.st_pictureBackground)$

Dann sollte ich eigentlich das richtige am Wickel haben. Ich kann mir nicht vorstellen, dass das richtige Bild durch Zufall irgendwie dabei ist. Der andere auswรคhlbare Absatz enthรคlt kein Bild.

GruรŸ
Gaby Reger

0 Kudos
Schneider
Crownpeak employee

Hallo Gaby,

Im Code wird auf den DisplayName verglichen, um ein Template zu identifizieren. Eine Identifikation anhand der DisplayNames sollte unbedingt vermieden werden, da diese

  • nicht eindeutig sind
  • pro Sprache unterschiedlich sein kรถnnen
  • leicht verรคndert werden kรถnnen

Fรผr die Identifikation des Absatzes sollte stattdessen der Referenzname benutzt werden. Diesen erhรคlt man รผber die Funktion getUid(), d.h.
     for_section.getTemplate.getUid()


Die aktuell umgesetzte Lรถsung funktioniert z.B. nicht, falls noch andere Sprachen auรŸer der deutschen generiert werden.

Kรถnnte dort das Problem liegen?

Beste GrรผรŸe
Lukas Schneider

0 Kudos
reger
Returning Observer

Hallo Lukas,

du hast natรผrlich Recht mit dem Hinweis auf die Sprachen und ich sollte da wirklich die Uid nutzen. War aber an der Stelle nicht relevant, weil wir nur eine Sprachgenerierung haben.
Das ganze Problem saรŸ leider vor dem Bildschirm. Die Warnings aus der Generierung bezogen sich zwar auf dieses Modul und auch genau diese Stelle, aber das war es auch dann schon mit dem Zusammenhang  Ich habe das Logfile falsch interpretiert und eigentlich wurde alles sauber generiert, d.h. die Warning bzgl. der Referenz hatte einen anderen Context.
Trotzdem vielen Dank fรผr deine Mรผhe und natรผrlich die Tipps!

Viele GrรผรŸe
Gaby Reger.

0 Kudos

Type a product name