2014-10-03 6 views
0

Есть ли какие-либо возможности использовать что-то вроде alternating template parts в tx_news расширение? В стандартном шаблоне tt_news я использовал <!-- ###NEWS_1###--><!-- ###NEWS_2###--><!-- ###NEWS_3###--> и т. Д. В tx_news все в Fluid, и я не вижу ничего подобного чередующимся частям шаблона в ручном режиме.Количество чередующихся частей шаблона в tx_news

+1

Вы можете просто делайте это в жидкости, нет необходимости в конкретной функции. Новость отображается в цикле for-loop, который предоставляет переменную с текущим индексом - используйте (mod your number of templates) для рендеринга новостей по-разному. Пример можно найти здесь (под заголовком «Итерационная информация»): http://fluidtypo3.org/viewhelpers/fluid/master/ForViewHelper.html – Jost

+0

@ Jost: так как это ответ, почему бы вам не опубликовать его в качестве ответа и добавить информацию об использовании по модулю ('')? – lorenz

+0

@lorenz С тех пор как я ленив :-) – Jost

ответ

1

Хорошо, снова ответ:

Вы можете просто сделать это в жидкости, нет необходимости для конкретной функции. Новость отображается в цикле for-loop, который предоставляет переменную с текущим индексом, см. 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> 
+0

Спасибо Jost - я попробую :) – Adrian