0

我正在将常规模板转换为响应式模板。我在生成列时遇到了一些麻烦。

我的代码无法正常工作

<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 的最大列数,我如何重写我的代码以每次生成具有“行流体”类的行?

4

1 回答 1

2

您可以使用 Smarty 3 手册(或Smarty 2 的等效页面)中描述的和属性找出{foreach}您正在循环的哪个迭代。iterationindex

在这种情况下,您想要“每 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}

于 2013-07-20T13:06:19.527 回答