我为我的项目下载了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中渲染Image,它继承自TYPO3.Neos.NodeTypes:Image。
正常实施如下:
{slideShowContainerItemCollection -> f:format.raw()}
这基本上从Neos获取ContentCollection并使用SlideShowItem中的模板完全呈现它,就像它应该的那样。
现在,由于SlideShowItem节点类型已经与模板相关联,我认为必须有一种直接的方式来使用简单的命令呈现SlideShowItem节点,自动考虑配置的模板。类似的东西:
<f:render node="{slideitem}">
这只是我的幻想,但是当Neos很容易自动生成整个节点集合的输出时,应该有一种渲染单个节点的方法。
我对节点系统和Fluid引擎的理解非常新手。什么是最接近我想要的东西?
答案 0 :(得分:0)
我不完全确定,但我认为您可以使用以下TypoScript来完成此任务
myRenderingOfAnItem = Lelesys.Plugin.SlideShow:SlideShowItem {
//Custom modifications for you rendering
}
在你的f:for循环中使用ts:render viewHelper
<ts:render path="myRenderingOfAnItem" context="{node: slideItem}" />
请记住在Fluid模板中导入ts名称空间
{namespace ts=TYPO3\TypoScript\ViewHelpers}