Smarty Foreach专栏

时间:2013-07-20 11:35:21

标签: 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>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 &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个的流明?

1 个答案:

答案 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}