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