Search the FirstSpirit Knowledge Base
Hallo zusammen,
für Konfigurationsangaben in einem JavaScript benötige ich nur den Pfad eines Media-Folders. Damit dieser nicht hartcodiert im JavaScript hinterlegt werden muss, möchte ich dies z.B. mit FS_REFERENCE pflegbar machen.
Über das Ergebnis "TargetReference" habe ich bisher mit Hilfe der API keine Möglichkeit gefunden, mir den reinen Pfad auszugeben. Auch über CMS_INPUT_FILE hatte ich noch keinen Erfolg.
Über CMS_INPUT_FILE kann ich ja z.B. bei einer Datei selbst über $CMS_VALUE(ref(st_file))$ die Pfadangaben der Datei ausgeben, was bei Verzeichnissen leider nicht funktioniert.
Sehe leider gerade vor lauter Bäumen den Wald nicht mehr.
Hat evtl. jemand eine Idee, wie man dies realisieren könnte? Ist FS_REFERENCE oder CMS_INPUT_FILE dafür überhaupt der richtige Ansatz?
Vielen Dank.
B. Schwab
Hallo Herr Höbbel,
leider ohne Erfolg.
Versuch 1 mit FS_REFERENCE:
16.03.2011 14:11:56.726 ERROR ($CMS_FOR( media, foldername.get().children(mediaClass) )$ at 169, 1): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined
inside of: Template 'Standard page' (id=261044)
inside of: $CMS_TRIM(level:3)$ - at 67, 14
inside of: $CMS_FOR( media, foldername.get().children(mediaClass) )$ - at 169, 1
Versuch 2 mit CMS_INPUT_FILE
16.03.2011 14:13:09.142 ERROR ($CMS_FOR( media, foldername.get().children(mediaClass) )$ at 169, 1): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined
inside of: Template 'Standard page' (id=261044)
inside of: $CMS_TRIM(level:3)$ - at 67, 14
inside of: $CMS_FOR( media, foldername.get().children(mediaClass) )$ - at 169, 1
Viele Grüße
B. Schwab
Hallo Herr Schwab,
was bekommen Sie denn mittels $CMS_VALUE(foldername.class)$ ausgegeben?
Und welche FirstSpirit Version benutzen Sie?
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Höbbel,
$CMS_VALUE(foldername.class)$ liefert "de.espirit.firstspirit.access.editor.value.TargetReferenceImpl". (bei Verwendung von FS_REFERENCE)
FS Version: 4.2.223.40456
Viele Grüße
B. Schwab
Nachricht geändert durch Björn Schwab
Hallo Herr Schwab,
und $CMS_VALUE(foldername.get().class)$ gibt Ihnen de.espirit.firstspirit.parser.eval.Undefined?
Oder haben Sie das CMS_SET in der Zeile vorher vergessen, um die Medien-Klasse zu definieren?
Viele Grüße,
Holger Höbbel
Hallo Herr Höbbel,
$CMS_VALUE(foldername.get().class)$ liefert nachfolgende Meldung:
16.03.2011 14:33:48.198 WARN ($CMS_VALUE(foldername.get().class)$ at 169, 4): Replacing null value with empty default!
"de.espirit.firstspirit.parser.eval.Undefined" wird ausgegeben beim Aufruf von $CMS_FOR( media, foldername.get().children(mediaClass) )$.
Das CMS_SET ist vorhanden (habe Ihren Auszug 1:1 kopiert und eingefügt).
Viele Grüße
B. Schwab
Hallo Herr Schwab,
aber ein Ordner ist in der Eingabekomponente ausgewählt worden?
Können Sie bitte einen anderen Ordner noch auswählen, um sicherzustellen, dass keine inkompatiblen Daten gespeichert sind?
Und noch eine Frage: Der entsprechende Ordner beinhaltet auch mindestens ein Medium?
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Höbbel,
ein Ordner war ausgewählt.
Habe nun nochmal alles "auf Anfang" gesetzt. D.h. Eingabekomponente neu angelegt und Verzeichnis noch einmal ausgewählt.
Das Resultat: es funktioniert! Ich befürchte dann fast, dass sich bei meinen Versuchen ein Fehler eingeschlichen hat 😕
Vielen Dank für die schnelle Hilfe!
Viele Grüße
B. Schwab
Hallo Herr Schwab,
hier noch eine Verbesserung der Syntax (kürzer und performanter, da nicht mehr über die Kinder iteriert wird)
$CMS_SET(mediaClass,class("de.espirit.firstspirit.access.store.mediastore.Media"))$
$CMS_SET(media,foldername.get().children(mediaClass).getFirst())$
$CMS_VALUE(ref(media,abs:2).url.substring(0,ref(media,abs:2).url.lastIndexOf("/")+1))$
[Dank an Gockel für den Hinweis]
Viele Grüsse aus Dortmund,
Holger Höbbel
Hallo Herr Höbbel,
super, vielen Dank!
Grüße
B. Schwab
Was ich noch vergessen habe:
In der Vorschau erhält man nicht das erwartete Verhalten, da es dort