Search the FirstSpirit Knowledge Base
Hallo zusammen,
ich hab derzeit ein Problem mit der Abfrage eines FS_INDEX Eintrages innerhalb von Datenquellen. Ich mรถchte in einer Tabellevorlage eine FS_INDEX-Liste pflegen und den Value der Eintrรคge (ttName) in einer Seitevorlage ausgeben.
Mein Aufbau:
Tablle 1: rewriteurls
--> Feld: ttHostList (FS_INDEX) --> schema: hostlist (xml)
Tabelle 2: hosts
--> Feld: ttName (TEXT)
Seitenvorlage:
<CMS_HEADER>
<CMS_FUNCTION name="contentSelect" resultname="frRewriteUrls">
<CMS_PARAM name="schema" value="osram" />
<QUERY entityType="rewriteurls" limit="0"></QUERY>
</CMS_FUNCTION>
</CMS_HEADER>$CMS_TRIM(level:1)$
<urlrewrite>
$CMS_IF(!frRewriteUrls.isEmpty)$
$CMS_FOR(_item, frRewriteUrls)$
$CMS_FOR(_itemHostList,_item.hostlist)$
<rule>
<from>^/web/$CMS_VALUE(_item.shorturl)$</from>
<to type="redirect">http://$CMS_VALUE(_itemHostList.?????????)$$CMS_VALUE(_item.postfix)$/TemplateMaster/$CMS_REF(_item.targeturl)$</to>
<condition name="host" operator="equal">$CMS_VALUE(_itemHostList.?????????)$</condition>
</rule>
$CMS_END_FOR$
$CMS_END_FOR$
$CMS_END_IF$
</urlrewrite>
$CMS_END_TRIM$
Ich hole mir รผber einen ContentSelect alle Datensรคtze der Tabelle rewriteurls und interiere dann mit 2 FOR-Schleifen darรผber. Leider komme ich nicht auf "ttName" der Eintrรคge in der FS_INDEX.
Ich habe schon sรคmtliche Varianten mit
_item.hostlist.values
_itemHostList.formData
etc. probiert. Jedoch ohne Erfolg.
Hat jemand eine Idee?
LG Thomas
<CMS_FUNCTION name="contentSelect" resultname="fr_cs_assets">
<CMS_PARAM name="schema" value="FSDatabase" />
<QUERY entityType="Systemassets"></QUERY>
</CMS_FUNCTION>
$CMS_FOR(_bim, fr_cs_assets.bim_files)$
<li>$CMS_VALUE(_bim.class)$</li>
$CMS_END_FOR$
Ausgabe:
de.espirit.firstspirit.client.access.editor.lists.IndexImpl$BoundRecord
Die Spalte "bim_files" ist ein XML-Feld das ich mit FS-INDEX setze.
In der Tabellenvorlage funktioniert die Ausgabe wie gewรผnscht. Ich benรถtige die Informationen aber noch fรผr einen Teaser in einem bestimmten Template.
Hallo zusammen,
das von TimoMeister beschriebene Problem habe ich auch - hat hier jemand eine Lรถsung parat? Oder konntest du das mittlerweile lรถsen, Timo?
Viele Grรผรe
Sebastian
Hallo Sebastian,
ich habe nur eine sehr umstรคndliche bzw unschรถne Lรถsung. Leider geht es bisher (?) nicht anders.
รber ein weiteres ContentSelect und dann eine Abfrage รผber den Identifier.
$CMS_FOR(_b,fr_cs_bim.filter(x->x.getGid.toString==_bim.getIdentifier.substring(32,68)))$
<li>$CMS_VALUE(_b.description)$</li>
$CMS_END_FOR$
Viele Grรผรe
Timo
Hierzu gibt es einen Feature Request - FS_INDEX direkter Zugriff auf Entity in ContentSelect
Hallo Sebastian,
auch wenn es sehr spรคt ist, vielleicht hilft dieser Lรถsungsansatz weiter:
Erst das content2 Objekt holen und dann damit die entity zum dataset umwandeln.
รber das dataset.formData.<Name der Eingabekomponente> kommt man dann an den Index und kann รผber diesen "ganz normal" iterieren.
Auch nicht schรถn, aber in meinen Augen etwas sauberer als das Persistenzformat zu interpretieren.
Der entsprechende Templatecode sieht so aus (Annahme: Die Datenquelle heiรt "FSDatabase", die FS_INDEX Eingabekomponente "bim") - und ich hoffe, ich habe mich nirgendwo vertippt
$-- Content2 holen --$
$CMS_SET(FSDatabaseCS2, #global.userService.getStore(class("de.espirit.firstspirit.access.store.Store$Type").CONTENTSTORE,false).getContent2ByName("FSDatabase"))$
$-- รผber die contentSelect Funktion iterieren --$
$CMS_FOR(_asset, fr_cs_assets)$
$-- entity in dataset umwandeln --$
$CMS_SET(_assetDataset,FSDatabaseCS2.getDataset(_asset))$
$-- รผber die FS_INDEX Eingabekomponente iterieren --$
$CMS_FOR(_bim,_assetDataset.formData.bim.values)$
$-- Gewรผnschte Informationen ausgeben --$
$CMS_END_FOR$
$CMS_END_FOR$
Vielleicht hilft es ja,
viele Grรผรe,
Holger
Hallo,
viel schรถner wรคre es, wenn ContentSelect Datasets zurรผck liefern wรผrde. Vom Entity kommt ich nur via Content2 ans Dataset. Allgemein wรคre es wรผnschenswert, da eine Rรผckkopplung von Entity <-> Dataset zu schaffen.
Viele Grรผรe
Marcel
Hallo Marcel,
im Prinzip sehe ich das auch so, im Detail wรผrde dies aber erst einmal eine inkompatible รnderung der Funktion sein.
Bleibt also die Mรถglichkeit, dass รผber einen zusรคtzlichen Parameter aufzubohren oder gleich eine weitere Funktion zur Verfรผgung zu stellen, die mittelfristig die contentSelect Funktion ablรถsen kรถnnte [vom Dataset kommt man ja leicht zum Entity, umgekehrt ist das schon deutlich schwieriger, da man hier zusรคtzliche Context-Informationen benรถtigt].
Hier wรคre es sinnvoll, einen entsprechenden Feature Request zu erstellen, damit dies diskutiert und bewertet werden kann.
Viele Grรผรe,
Holger