Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich versuche momentan vergeblich, Inhalte eines FS_CATALOG aus einer referenzierten Seite in eine Combobox einzubinden. Bisher habe ich nur die Möglichkeit gefunden, die Combobox aus einer Datenquelle zu befüllen. Mit folgender Referenz erhalte ich bereits Zugriff auf die referenzierte Seite (glossar_1) und den FS_CATALOG (st_glossary):
ref("pageref:glossar_1").page.body("content").getChildren().toList()[1].formData.get(#global.language, "st_glossary").get()
Gibt es überhaupt die Möglichkeit, in eine Combobox solche Inhalte einfließen zu lassen?
Hallo Jonas,
D.h. Du hast auf einer fixen Seite einen FS_CATALOG und möchtest die dort eingetragenen Elemente in einer Combobox anzeigen?
Der Name der EK st_glossary hört sich nach einem Glossar an - gibt es einen bestimmten Grund warum ihr das nicht über Datenquellen modelliert habt? Kannst Du vielleicht den Anwendungsfall etwas genauer beschreiben? Ggf. ist hier schon die Nutzung des FS_CATALOG eine nicht ganz optimale Variante...
Viele Grüße
Michael
Hallo Michael,
die Gründe, das Glossar nicht als Datenquelle anzulegen, sind folgende:
- Mehrere Länderseiten haben unterschiedliche Glossare, die nicht in einzelnen Datenquellen gepflegt werden sollen
-> Die Einträge sind nicht bloß Übersetzungen, sondern pro Seite unterschiedlich
- Das System ist momentan darauf ausgelegt, so wenig Datenquellen wie möglich zu verwenden (das kann natürlich entsprechend argumentiert geändert werden)
Grundsätzlich sehe ich aber für ein einheitliches Glossar den Sinn einer Datenquelle.
Hallo Jonas,
das sollte grundsätzlich gehen. Ich habe leider gerade kein FS System zur Verfügung,
aber du dürftest über den Wert, den du durch dein Snippet erhältst iterieren können, bspw:
$CMS_SET(sv_glossary, ref("pageref:glossar_1").page.body("content").getChildren().toList()[1].formData.get(#global.language, "st_glossary").get())$
$CMS_FOR(sv_for_glossary_item, sv_glossary)$
$CMS_VALUE(sv_for_glossary_item.item.st_headline)$
$CMS_END_FOR$
Wichtig ist letztendlich, dass du in der Schleife das du das ".item" nicht vergisst.
Beste Grüße
Felix
Hallo Felix,
danke für deinen Input. Die Ausgabe im HTML-Kanal hatte ich bereits vorher ausprobiert. Mit Combobox ist an dieser Stelle aber keine Combobox im klassischen HTML gemeint, sondern die Eingabekomponente CMS_INPUT_COMBOBOX. Da ich von keiner Möglichkeit weiß, im Formular-Bereich für die Werte dieser Eingabekomponente zu iterieren, dachte ich eher daran, dass mit einem ähnlichen Zugriff wie "type = database" auf vorgegebene Werte (in diesem Fall einer Liste) zugegriffen werden kann.
Im Endeffekt geht es nur darum, in einer Linkvorlage eine Auswahlliste, die alle Inhalte aus dem Glossar enthält, anzubieten.
Hallo Jonas,
aus meiner Sicht sind die beiden Eingabekomponenten schon vom Datentyp ihrer Einträge her nicht kompatibel (Card vs. Option).
Womöglich kannst du einen ValueService implementieren, der die Daten aus dem CATALOG liest und passende Elemente für die Combobox liefert.
Ich würde aber auch zu einer Lösung mit Datenquellen tendieren.
Viele Grüße
Tim
@Tim:
Innerhalb einer ValueService-Implementierung können Werte aus FirstSpirit-Eingabekomponenten verwendet werden. Unterstützt wird diese Funktionalität für die Eingabekomponenten:
Leider, leider trotz FeatureRequests
Das stimmt, aber das betrifft ja nur die Parameter, die dem ValueService übergeben werden. Ich verstehe es so, dass CATALOG und Combobox nicht im selben Formular sind. Über den SpecialistBroker, den der ValueService erhält, sollte es doch möglich sein sich die Glossar-Seite und das darin enthaltene Catalog manuell zu holen.
Hallo zusammen,
Kleiner Hinweis: ValueService ist hier die falsche Adresse - es geht hier ja um die Wertemenge der Combobox. Dazu müsste man einen GomIncludeValueProvider implementieren. Der wird dann als <public>-Komponente in der module.xml deklariert und in der Combobox mit
<CMS_INCLUDE_OPTIONS type="PUBLIC">
eingebunden.
Ich denke aber auch, dass eine Lösung über Datenquellen sinnvoller wäre.
Viele Grüße
Michael
Hallo Jonas,
benötigst Du noch weitere Hilfe oder haben Dir die Antworten bereits geholfen?
In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere
Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung
gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.
Viele Grüße
Thorsten