Questions & Answers

SOLVED
thomas_ritter
I'm new here

FS_INDEX Abfrage Value

Jump to solution

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

16 Replies

<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.

0 Kudos

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

0 Kudos

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

0 Kudos
TimoMeister
Returning Responder

Hierzu gibt es einen Feature Request - FS_INDEX direkter Zugriff auf Entity in ContentSelect

0 Kudos

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 Smiley Wink

$-- 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

MarsDD
Occasional Observer

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

0 Kudos
hoebbel
Crownpeak employee

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

0 Kudos