- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
FS_INDEX Abfrage Value
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
- Labels:
-
Developers
- Tags:
- fs_index
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, Danke.
Dann werde ich es direkt in der Tabellenvorlage Umsetzen mรผssen und diese als Content einbinden in das Pagetemplate.
$CMS_TRIM(level:2)$
<urlrewrite>
$CMS_FOR(_item, ttHostList)$
<rule>
<from>^/web/$CMS_VALUE(ttShortURL)$</from>
<to type="redirect">http://$CMS_VALUE(_item.ttName)$$CMS_VALUE(_item.postfix)$/TemplateMaster$CMS_REF(ttTargetUrl)$</to>
<condition name="host" operator="equal">$CMS_VALUE(_item.ttName)$</condition>
</rule>
$CMS_END_FOR$
</urlrewrite>
$CMS_END_TRIM$
lg thomas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
bei Deinem Problem hilft immer ein Blick ins ODFS. Ein FS_INDEX gibt im Iterator Objekte vom Typ Record wieder. Alternativ hรคngt man an die Laufvariable im Template-Code ein .class an, dann mรผsste man den Klassennamen sehen.
Wenn das Element eine Entity ist und eine eigene Tabellenvorlage hat (in dem die Entity ausgegeben wird), dann mรผsste eigentlich per $CMS_VALUE()$ dieses Template ausgegeben werden.
Falls das nicht funktioniert, ich sehe gerade, ein Objekt vom Typ Record hat eine ToJSON-Methode. Man kรถnnte sich also on-the-fly per CMS_SET ein neues Objekt erstellen lassen kรถnnen, auf dass man, wie unter dem CMS_SET-ODFS-Eintrag beschrieben, zugreifen kann.
Grรผรe Marian
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Thomas,
fรผr die iterative Abarbeitung der Index-Inhalte steht eine gesonderte Funktionalitรคt zur Verfรผgung. Hierzu lรคuft die Schleife nicht รผber den Index direkt, sondern รผber dessen Eigenschaft values.
In deinem Fall wie folgt:
$CMS_FOR(item,_item.hostlist.values)$
Die Variable item enthรคlt dann in jedem Durchlauf direkt das Werteobjekt und der Zugriff mit item.ttName sollte reibungslos funktionieren.
Beste Grรผรe
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
zu Lรถsung Marian:
habe es so leider nicht lรถsen kรถnnen. Im JSON steht die Information die ich benรถtige nicht drin, sondern nur wenige Informationen zu jedem RECORD:
{
"FS_GID":"c80cd0cc-e45c-4fd0-abd9-860564d19a1e",
"shorturl":"test",
"hostlist":"<CMS_VALUE name=\"ttHostList\" tag=\"FS_INDEX\"><LANG id=\"ยง\" set=\"1\"><INDEX><RECORD>{\"schema\":\"osram\",\"gid\":\"c10caf10-4531-4d97-bb99-761ef5487fdf\",\"table\":\"hosts\"}<\/RECORD><RECORD>{\"schema\":\"osram\",\"gid\":\"dd22c2c9-501b-4bac-af02-7e68e93953c5\",\"table\":\"hosts\"}<\/RECORD><RECORD>{\"schema\":\"osram\",\"gid\":\"8e7e962d-e3ce-4e76-b584-10c37f31fef5\",\"table\":\"hosts\"}<\/RECORD><RECORD>{\"schema\":\"osram\",\"gid\":\"379a6de1-4d31-4b92-ad9a-1845c37389ad\",\"table\":\"hosts\"}<\/RECORD><\/INDEX><\/LANG><\/CMS_VALUE>",
"released by":3244,
"changed by":3244,
"wf col":null,
"wf id":null,
"host":"www.cms-web-dev.os4.spacenet.de",
"postfix":"/test",
"targeturl":"<CMS_VALUE name=\"ttTargetUrl\" tag=\"FS_REFERENCE\"><LANG id=\"ยง\" set=\"1\"><UID>shorturl<\/UID><UIDTYPE>SITESTORE_LEAF<\/UIDTYPE><REMOTE/><\/LANG><\/CMS_VALUE>",
"fs_id":258
}
zu Lรถsung Stefan:
komme so leider auch nicht drauf, da ich einen Error erhalte wenn ich wie beschrieben die FOR-Schleife gestalte:
06.04.2016 14:15:53.109 ERROR ($CMS_FOR( _itemHostList, _item.hostlist.values )$ at 10, 4): Cannot iterate over: class de.espirit.firstspirit.parser.eval.Undefined
inside of: Template 'pt_rewriteurls__448_dev' (id=33847)
inside of: $CMS_TRIM(level:1)$ - at 6, 14
inside of: $CMS_IF( ! frRewriteUrls.isEmpty )$ - at 8, 1
inside of: $CMS_FOR( _item, frRewriteUrls )$ - at 9, 3
inside of: $CMS_FOR( _itemHostList, _item.hostlist.values )$ - at 10, 4
lg thomas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hm, sehe gerade erst, dass du direkt auf die Spalten der Datenbank zugreifst und nicht auf das Formular, richtig? Dann geht das so nicht und anders vermutlich auch eher schwer. Deine Ausgabe (RECORD) oben zeigt keinen Record sondern einen Datensatzeintrag mit den einzelnen Spalten. Auf diesem Weg fehlt jegeliche Verknรผpfung zum Formular und somit auch zur Auswertung des FS_INDEX.
Gruร
Stefan
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, Danke.
Dann werde ich es direkt in der Tabellenvorlage Umsetzen mรผssen und diese als Content einbinden in das Pagetemplate.
$CMS_TRIM(level:2)$
<urlrewrite>
$CMS_FOR(_item, ttHostList)$
<rule>
<from>^/web/$CMS_VALUE(ttShortURL)$</from>
<to type="redirect">http://$CMS_VALUE(_item.ttName)$$CMS_VALUE(_item.postfix)$/TemplateMaster$CMS_REF(ttTargetUrl)$</to>
<condition name="host" operator="equal">$CMS_VALUE(_item.ttName)$</condition>
</rule>
$CMS_END_FOR$
</urlrewrite>
$CMS_END_TRIM$
lg thomas
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Thomas,
ist dieses Posting noch offen? Benรถtigst du noch weitere Hilfe oder war der direkte Weg รผber die Tabellenvorlage erfolgreich?
Viele Grรผรe
Michaela
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo Michaela,
das Problem ist damit erledigt.
Danke.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hallo zusammen,
wenn ich das richtig lese, kommt man รผber ein contentSelect nicht direkt an die Werte des FS_INDEX, richtig?
Wie komme ich dann an die Werte?
In meinem Anwendungsfall kann ich es nicht direkt in der Tabellenvorlage umsetzen.
Viele Grรผรe
Timo
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Timo,
poste doch mal ein Beispiel bzw. Ausschnitt deines Codes und eine Erklรคrung warum du nicht direkt auf die Tabellevorlage zugreifen kannst.

