tx_news中交替模板部件的数量

时间:2014-10-03 09:12:55

标签: typo3 typoscript fluid tx-news

是否有可能使用alternating template parts扩展程序中tx_news之类的内容?在标准tt_news模板中,我曾使用<!-- ###NEWS_1###--> <!-- ###NEWS_2###--> <!-- ###NEWS_3###-->等。在tx_news中,一切都在流体中,我看不到任何类似于在手册中交替使用模板部件。

1 个答案:

答案 0 :(得分:1)

好的,再回答:

您可以在流畅的环境中执行此操作,无需特定功能。新闻在for循环中呈现,for循环提供当前索引的变量,请参阅documentation

使用循环索引模数来模拟不同模板的数量,以交替的方式呈现不同的新闻。迭代变量提供了一些可用于控制输出的子属性。要全部查看,请使用<f:debug>{iterator}</f:debug>

例如,在EXT:news的列表视图中,您可以执行此操作以获取三个交替模板,每个模板由一个部分表示。仅显示相关的内部循环:

<f:for each="{news}" as="newsItem" iteration="iterator">
    <f:if condition="{iterator.index} % 3 == 0">
        <f:render partial="List/Item_Layout1" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
    </f:if>

    <f:if condition="{iterator.index} % 3 == 1">
        <f:render partial="List/Item_Layout2" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
    </f:if>

    <f:if condition="{iterator.index} % 3 == 2">
        <f:render partial="List/Item_Layout3" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
    </f:if>
</f:for>

如果你有EXT:vhs安装了命名空间快捷方式v(非常好的扩展!),这可以做得更优雅:

<f:for each="{news}" as="newsItem" iteration="iterator">
    <v:switch value="{iterator.index} % 3">
        <v:case value="0" break="true">
            <f:render partial="List/Item_Layout1" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
        </v:case>

        <v:case value="1" break="true">
            <f:render partial="List/Item_Layout2" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
        </v:case>

        <v:case value="2" break="true">
            <f:render partial="List/Item_Layout3" arguments="{newsItem: newsItem,settings:settings,iterator:iterator}" />
        </v:case>
    </v:switch>