Hallo STrojette,
der Aufruf eines RenderTemplates in einem RenderTemplate ist kein Problem, wenn das im Quelltext des RenderTemplates gemacht wird. ACHTUNG: Den Kontext beachten - das äußere Rendertemplate kann nicht auf Werte zurückgreifen, die im inneren gesetzt wurden.
Trick dazu: Im äußeren Kontext eine Liste definieren und die im inneren Kontext erweitern. Das Objekt steht dann modifiziert im äußeren Kontext zur Verfügung.
Das hier könnte gehen:
$CMS_SET(set_this,[])$
$CMS_RENDER(template:"item_or_card")$
$CMS_RENDER(template:"myRenderTemplate", item:set_this[0])$
Der "Trick" ist, dass im Rendertemplate der "äußere" Kontext zur Verfügung steht. Dort gibt es also #this und gegebenenfalls #card. Dort kannst Du dann einfach
$CMS_IF(#this.class == class("de.espirit.firstspirit.store.access.pagestore.SectionImpl"))$
$CMS_SET(set_this[0],#this)$
$CMS_ELSE$
$CMS_SET(set_this[0],#card)$
$CMS_END_IF$
nutzen.
Es müsste sogar umgedreht funktionieren. Also ganz normal das bisherige Rendertemplate aufrufen, in diesem die Liste definieren und dann das Rendertemplate zur Fallunterscheidung aufrufen. Oder einfach gar nichts übergeben und im Rendertemplate direkt den Kontext prüfen.
WICHTIG: Das funktioniert nur, weil ein Formattemplate #this nicht in seinen Kontext setzt! Umgedreht bedeutet dies natürlich auch, dass Du auf diese Art immer das Element prüfst, welches zuletzt #this in den Kontext gesetzt hat. Das kann man hier ausnutzen, an anderer Stelle kann man da aber auch schnell unerwartete Effekte bekommen 😉
Bitte gründlich prüfen, ich habe es nicht ausprobiert und kann weder Tippfehler noch die Möglichkeit, dass ich irgendetwas nicht bedacht habe, ausschließen...
Viele Grüße
Holger