我正在将常规模板转换为响应式模板。我在生成列时遇到了一些麻烦。
我的代码无法正常工作
<div class="row-fluid">
{foreach name=aussen item=module_data from=$module_content}
{php} $col++; {/php}
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">View details »</a></p>
</div>
{php} if ($col>=4) {$col=0;echo '';}{/php}
{/foreach}
</div>
响应主题具有此结构
<div class="span9">
<div class="row-fluid">
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">Button »</a></p>
</div>
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">Button »</a></p>
</div>
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">Button »</a></p>
</div>
</div>
<div class="row-fluid">
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">Button »</a></p>
</div>
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">Button »</a></p>
</div>
<div class="span4">
<h2>Heading</h2>
<p>Text</p>
<p><a class="btn" href="#">Button »</a></p>
</div>
</div>
</div>
如果每行达到最大值,我如何重写“我的代码”以生成具有“行 - 流”类的行,并给出3个,4个或5个的流明?
答案 0 :(得分:2)
您可以使用{foreach}
和iteration
属性as described in the Smarty 3 manual(或the equivalent page for Smarty 2)找出您所在的index
循环的迭代。
在这种情况下,您希望“每4次迭代”执行不同的操作,因此您可以使用Smarty的is even by 4
构造。您的foreach循环名称为aussen
,因此要测试的变量为$smarty.foreach.aussen.iteration
。
或者,您可以使用现有的{$col}
变量(虽然请参阅上面关于不使用{php}
标记的评论):如果列号为零,请打开容器div以开始新行;如果是4,则关闭容器div以标记行的结尾。这种方法还需要你发现你是否在循环的最后一行,以防它不能被4整除,所以你总是关闭这行:{if $col==4 or $smarty.foreach.aussen.last}</div>{/if}
。