我正在尝试使用模板工具包[%FOREACH%]循环来拆分并将特定范围内的项目渲染到不同的行中。
<ul>
<ul class="row-top">
[% FOREACH news IN newsfeeds %]
[% IF loop.index() < 3 %]
[% INCLUDE content_news/news_item.tt %]
[% END %]
[% END %]
</ul>
[% FOREACH news IN newsfeeds %]
[% IF loop.index() > 3 %]
[% INCLUDE content_news/news_item.tt %]
[% END %]
[% END %]
</ul>
<ul>
<ul class="row-top">
<li class="item featured"></li>
<li class="item"></li>
<li class="item last"></li>
</ul>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
</ul>
<ul class="top-row">
<li class="item featured"></li>
<li class="item"></li>
<li class="item last"></li>
</ul>
<ul class="row">
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item last"></li>
</ul>
<ul class="row">
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item last"></li>
</ul>
<ul class="row">
<li class="item"></li>
<li class="item"></li>
<li class="item"></li>
<li class="item last"></li>
</ul>
由于列表项可能具有不同的高度,因此它们不能只向左浮动。它们需要在不同的行中呈现。 foreach循环应该打开和关闭标记,如上面的标记所示。
因为特色项目的宽度是默认项目的两倍(想想4列网格),所以第一行(.top-row)只有三个项目。
所有这一切最好应该从同一个foreach循环中呈现,因为数据来自同一个源。
目的是在Template Toolkit中完成此任务,但是任何显示该想法背后逻辑的方法都将受到赞赏!
干杯,W。
答案 0 :(得分:3)
我会slice
列表:
[% featured_items = newsfeeds.slice(0,2) %]
[% normal_items = newsfeeds.slice(3) %]
<ul class="row-top">
[% FOREACH news IN featured_items %]
[% INCLUDE content_news/news_item.tt %]
[% END %]
</ul>
<ul class="row">
[% FOREACH news IN normal_items %]
[% INCLUDE content_news/news_item.tt %]
[% IF ( loop.count % 4 ) == 0 %]</ul><ul class="row>[%END%]
[% END %]
</ul>