我正在尝试获取一个模板工具包 [% 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.