Php Smarty Foreach列
我正在将常规模板转换为响应模板。我在生成列时遇到一些问题 我的代码工作不正常Php Smarty Foreach列,php,smarty,Php,Smarty,我正在将常规模板转换为响应模板。我在生成列时遇到一些问题 我的代码工作不正常 <div class="row-fluid"> {foreach name=aussen item=module_data from=$module_content} {php} $col++; {/php} <div class="span4"> <h2>Heading</h2> <p
<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>
{foreach name=aussen item=module\u data from=$module\u content}
{php}$col++;{/php}
标题
正文
{php}如果($col>=4){$col=0;echo';}{/php}
{/foreach}
响应主题具有这种结构
<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的最大列数,我如何重写代码,每次都用“Row fluid”类生成一行?您可以使用
迭代
和索引
属性(或)找出{foreach}
循环的哪个迭代
在这种情况下,您希望“每4次迭代”执行不同的操作,因此可以使用Smarty的is even by 4
构造。foreach循环的名称为aussen
,因此要测试的变量是$smarty.foreach.aussen.iteration
或者,您可以使用现有的
{$col}
变量(尽管请参见我上面关于不使用{php}
标记的评论):如果列号为零,请打开容器div以开始新行;如果为4,则关闭容器div以标记行的结束。这种方法还要求您确定您是否在循环的最后一行,以防它不能被4整除,因此您总是关闭该行:{if$col==4或$smarty.foreach.aussen.last}{/if}
而不是中断到PHP中,您应该使用smarty赋值来增加计数器:{PHP}$col++;{/php}
可以变成{assign var=col value=$col+1}
和{php}如果($col>=4){$col=0;echo'';}{/php}
可以变成{if$col>=4}{assign var=col value=0}{/if}
。