Search the FirstSpirit Knowledge Base
Hallo zusammen
Ich habe folgendes Szenarium:
Ich habe zwei FS_INDEX die hintereinander aufgerufen werden müssen.
Ich muss über den ersten FS_INDEX loopen, dass klappt noch.
Danach muss ich über die Entry's des anderen FS_INDEX loppen. Da erhalte ich keine Ergebnisse.
Der FS_INDEX ist auch noch sprachabhängig.
Sorry ist einbischen schwer zu beschreiben.
$CMS_IF(#global.preview)$
$CMS_FOR(entry, cs_instances.values)$
DEBUG-entry: "-$CMS_VALUE(entry.name)$-"
$CMS_FOR(for_channel, entry.values)$
$CMS_IF(for_channel.getIsVChannel())$
<vchannel>$CMS_VALUE(for_channel.channelId)$</vchannel>
$CMS_ELSE$
<channel>$CMS_VALUE(for_channel.channelId)$</channel>
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_FOR$
$CMS_END_IF$
Erster FS_INDEX
Zweiter FS_INDEX mit der Empfängerlisten
Grüsse. Thomas
Hallo Thomas,
müsste der innere FS_INDEX nicht so aufgerufen werden (in der Annahme, dass das DatasetDataAccessPlugin genutzt wird)
$CMS_FOR(for_channel,entry.formData.<Name des inneren FS_INDEX>)$
Wenn in dem Index keine FirstSpirit Datensätze verlinkt sind, wird es schwierig zu unterstützen, da man dann erst einmal wissen muss, was das überhaupt für Objekte sind, die das Data Access Plugin des äußeren FS_INDEX zurück liefert. Da aber innen auch ein FS_INDEX benutzt wird, gehe ich mal davon aus, dass "nur" Datensätze referenziert werden 🙂
Viele Grüße
Holger
Hallo Thomas,
müsste der innere FS_INDEX nicht so aufgerufen werden (in der Annahme, dass das DatasetDataAccessPlugin genutzt wird)
$CMS_FOR(for_channel,entry.formData.<Name des inneren FS_INDEX>)$
Wenn in dem Index keine FirstSpirit Datensätze verlinkt sind, wird es schwierig zu unterstützen, da man dann erst einmal wissen muss, was das überhaupt für Objekte sind, die das Data Access Plugin des äußeren FS_INDEX zurück liefert. Da aber innen auch ein FS_INDEX benutzt wird, gehe ich mal davon aus, dass "nur" Datensätze referenziert werden 🙂
Viele Grüße
Holger
Hoi Holger
Danke für die schnelle Antwort.
Ich habe mal deinen Vorschlag eingebaut. Leider klappt es noch nicht.
Ich erhalte keine Resultate aus dem zweiten FS_INDEX.
Das ist die innere FS_INDEX
<FS_INDEX name="cs_um_channels" height="2" useLanguages="yes">
<LANGINFOS>
<LANGINFO lang="DE" label="Empfängerlisten/-segmente"/>
<LANGINFO lang="*" label="Recipient lists or segments"/>
</LANGINFOS>
<SOURCE name="EmailMarketing/ChannelDataAccessPlugin" semtagName=""/>
</FS_INDEX>
Code auslesen
$CMS_IF(#global.preview)$
$CMS_FOR(for_instance, cs_instances.values)$
$CMS_FOR(for_channel, for_instance.formData("cs_um_channels").values)$
$CMS_IF(for_channel.getIsVChannel())$
<vchannel>$CMS_VALUE(for_channel.channelId)$</vchannel>
$CMS_ELSE$
<channel>$CMS_VALUE(for_channel.channelId)$</channel>
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_FOR$
$CMS_END_IF$
Ausgabe von $CMS_VALUE(for_instance)$
de.espirit.firstspirit.store.access.contentstore.DatasetImpl{de.espirit.or.impl.EntityImpl@d22fae59{T_NEWSLETTER_INSTANCES,PERSISTENT,released,FS_ID=91200,FS_VALID_FROM=1673423723955,FS_VALID_TO=9223372036854775807,FS_RELEASE_TO=9223372036854775807,FS_GID=143908e3-5444-462c-9288-71879f73958b}}
Grüsse. Thomas
Hallo Thomas,
Du kannst im FirstSpirit Code entweder die Beanschreibweise nutzen oder die Methoden ausschreiben.
Um das innere FS_INDEX zu bekommen, musst Du also entweder
for_instance.formData.cs_um_channels
oder
for_instance.formData.get(#global.language,"cs_um_channels").get()
schreiben. (bei sprachunabhängigen Eingabekomponenten kannst Du auch anstelle der Sprache null benutzen)
Und Du musst dann wieder über die values des Index iterieren (so wie außen).
Wenn das nicht auf Anhieb klappt, lass Dir mal die Klasse von dem Objekt ausgeben, dass Du jeweils hast. (mit .getClass() oder .class) Veerinfacht gesagt brauchst Du beim inneren Index dieselbe Klasse wie beim äußeren. Sobald Du die hast, kannst Du über den entsprechenden Ausdruck.values iterieren.
Viele Grüße
Holger
Hallo Holger
Parallel habe ich noch bei PINUTS nachgefragt. Jetzt klappt es mit dem auslesen.
$CMS_FOR(for_channel, for_instance.formData.cs_um_channels.values)$
$-- Channel aus EmailMarketing/ChannelDataAccessPlugin lesen --$
$CMS_FOR(for_instance, cs_instances.values)$
$CMS_FOR(for_channel, for_instance.formData.cs_um_channels.values)$
$CMS_IF(for_channel.getIsVChannel())$
<vchannel>$CMS_VALUE(for_channel.channelId)$</vchannel>
$CMS_ELSE$
<channel>$CMS_VALUE(for_channel.channelId)$<channel>
$CMS_END_IF$
$CMS_END_FOR$
$CMS_END_FOR$
Besten DANK für deine Hilfe und Unterstützung
Grüsse. Thomas