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 &raquo;</a></p>
        </div>
        <div class="span4">
          <h2>Heading</h2>
          <p>Text</p>
          <p><a class="btn" href="#">Button &raquo;</a></p>
        </div>
        <div class="span4">
          <h2>Heading</h2>
          <p>Text</p>
          <p><a class="btn" href="#">Button &raquo;</a></p>
        </div>
    </div>
    <div class="row-fluid">
        <div class="span4">
          <h2>Heading</h2>
          <p>Text</p>
          <p><a class="btn" href="#">Button &raquo;</a></p>
        </div>
        <div class="span4">
          <h2>Heading</h2>
          <p>Text</p>
          <p><a class="btn" href="#">Button &raquo;</a></p>
        </div>
        <div class="span4">
          <h2>Heading</h2>
          <p>Text</p>
          <p><a class="btn" href="#">Button &raquo;</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}