Я скачал плагин Lelesys.Plugin.SlideShow для своего проекта. Это представляет два прототипа NodeType:
prototype(Lelesys.Plugin.SlideShow:SlideShowContainer) < prototype(TYPO3.Neos:Content)
prototype(Lelesys.Plugin.SlideShow:SlideShowContainer) {
templatePath = 'resource://Lelesys.Plugin.SlideShow/Private/Templates/TypoScript/SlideShowContainer.html'
slideShowContainerCollection = ${q(node).children('slideShowContainer').children('[instanceof TYPO3.Neos.NodeTypes:Image]')}
slideShowContainerItemCollection = TYPO3.Neos:ContentCollection
slideShowContainerItemCollection {
nodePath = 'slideShowContainer'
}
properties = ${node.properties}
}
prototype(Lelesys.Plugin.SlideShow:SlideShowItem) < prototype(TYPO3.Neos.NodeTypes:Image)
prototype(Lelesys.Plugin.SlideShow:SlideShowItem) {
templatePath = 'resource://Lelesys.Plugin.SlideShow/Private/Templates/TypoScript/SlideShowItem.html'
slideShowContainerProperty = ${q(node).property('_parent.parent.properties')}
sliderImageTitle = ${q(node).property('sliderImageTitle')}
sliderImageDescription = ${q(node).property('sliderImageDescription')}
}
Как видите, он поставляется с предопределенными шаблонами. Я заменил его на свой. В шаблоне для SlideShowContainer у меня примерно такая ситуация:
<f:if condition="{slideShowContainerCollection -> f:count()}>1">
<f:then>
<f:for each="{slideShowContainerCollection}" as="slideitem" iteration="slideitemIterator">
<media:image image="{slideitem.properties.image}" alt="test" />
Это лучшее, что мне удалось сделать на данный момент, использовать TYPO3.Media ImageViewHelper для рендеринга изображения внутри элемента SlideShowItem, который наследуется от TYPO3.Neos.NodeTypes:Image.
Нормальная реализация такова:
{slideShowContainerItemCollection -> f:format.raw()}
Это в основном берет ContentCollection из Neos и полностью отображает его, используя шаблон из SlideShowItem, как и предполагалось.
Теперь, поскольку тип узла SlideShowItem уже связан с шаблоном, я полагаю, что должен быть прямой способ отобразить узлы SlideShowItem с помощью простой команды, автоматически принимая во внимание настроенный шаблон. Что-то типа:
<f:render node="{slideitem}">
Это всего лишь моя фантазия, но должен быть способ рендерить отдельные узлы, когда Neos так легко автоматически генерирует вывод всего набора узлов.
Мое понимание системы узлов и движка Fluid совсем как у новичка. Что было бы ближе всего к тому, что я хочу?