Hallo zusammen,
auch wenn das ursprüngliche Posting von Tim schon etwas her ist würde ich hier gerne nochmal einhaken. Der von Stefan beschriebene Weg mag eine Lösung für das von Tim beschriebene Setup sein. GIbt es hier aber auch noch eine alternative Lösung, wenn über das Entity gearbeitet werden muss?
Ich habe aktuell das gleiche Problem, da ich meinen Datensatz aus den pageParams hole (was ja immer ein Entity ist).
Vereinfachte Form der Projektstruktur:
Datenquelle Artikel referenziert (m:n) die Datenquelle Tags (Schlagwörter).
Dazu gibt es eine Artikeldetailseite (Content-Projektion).
In der Seitenvorlage werden mehrere Formatvorlagen gerendert, die auf Daten des aktuellen Content-Projektionsdatensatzes zugreifen. Deshalb rendern wir als erstes in der Seitenvorlage eine Formatvorlage, die die Unterscheidung zwischen ContentProjektion und "Nicht-Contentprojektion" vornimmt und die einzelne Eigenschaften des Artikels in den Seitenkontext legt.
Vereinfachtes Beispiel:
$CMS_IF(#global.pageParams.data.size==1)$
$CMS_SET(#global.context("PAGE")["pv_article_data"],#global.pageParams.data.get(0))$
$CMS_SET(#global.context("PAGE")["pv_page_tags"], pv_article_data.tags)$
$CMS_ELSE$
$CMS_SET(#global.context("PAGE")["pv_page_tags"], pt_page_tags)$
$CMS_END_IF$
pt_page_tags im ELSE-Fall ist hierbei ebenfalls um eine FS_INDEX Komponente, nur eben direkt in der Seitenvorlage und nicht im Datensatz der Projektion.
In einer späteren Formatvorlage werden dann die Tags gerendert:
$CMS_FOR(fv_tag, pv_page_tags.values)$
$CMS_SET(fv_tag_text, fv_tag.tt_text)$
<a class="tag" href="#" target="_self"><strong>$CMS_VALUE(fv_tag_text)$</strong></a>
$CMS_END_FOR$
Für den ELSE-Fall von oben funktioniert das ganz normal.
Für die Content-Projektion habe ich das gleiche Verhalten, wie Tim.
Es handelt sich um keinen IndexAccessor sondern IndexImpl mit den entsprechenden BoundRecords.
Gibt es hierfür auch eine Lösung? (Version 5.2.515)
Danke und beste Grüße
Felix