0

你有没有可能使用类似alternating template partsintx_news扩展的东西?tt_news在我曾经使用过的标准模板中<!-- ###NEWS_1###--> <!-- ###NEWS_2###--> <!-- ###NEWS_3###-->等等。tx_news一切都在流体中,我看不到任何类似于手册中交替模板部分的东西。

4

1 回答 1

2

好的,再次作为答案:

您可以在流体中执行此操作,不需要特定功能。新闻在一个 for 循环中呈现,它提供了一个带有当前索引的变量,请参阅文档

使用循环索引对不同模板的数量取模,以交替方式以不同方式呈现新闻。迭代变量提供了更多可用于控制输出的子属性。要查看所有内容,请使用<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>
于 2014-10-06T19:58:54.510 回答