代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

使用Smarty将元素排列到列中

  •  0
  • Manos Dilaverakis  · 技术社区  · 16 年前

    1   4
    2   5
    3
    

    有没有办法用Smarty实现这一点(以及如何实现),或者我应该让php文件完成所有工作?

    2 回复  |  直到 16 年前
        1
  •  5
  •   thomasrutter    16 年前

    在smarty中可以做到这一点,但由于HTML和CSS实际上不支持列,所以这是一件很痛苦的事情。它涉及计算数组中有多少项,首先使用{section}标记抓取项的前半部分(向上舍入),并将它们显示在一列中,然后使用单独的{section}抓取项的后半部分(向上舍入),并将它们放置在第二列中。

    对于{section},可以指定从哪个数组索引开始,以及需要多少项。如果将数组中的项数设置为另一个变量,则只需计算即可。

    您可以尝试这样的代码-但我恐怕我还没有测试这些计算,所以它可能是错误的。。。

    <td>
      {section name=myitem loop=$items max=(($itemcount/2)+0.499)}
        {$items[myitem]}
      {/section}
    </td>
    <td>
      {section name=myitem loop=$items start=(($itemcount/2)+0.499)}
        {$items[myitem]}
      {/section}
    </td>
    
        2
  •  0
  •   Tomas Krejcar    10 年前

    下面是我使用foreach和迭代的解决方案:

    <ul>
    {foreach from=$items item=item name=firstFE}
                {if $smarty.foreach.firstFE.index lt ($items|@count / 2)}
                   <li>{$item->title}</li>
                {/if}
    {/foreach}
    </ul><ul>
    {foreach from=$items item=item name=secFE}
                {if $smarty.foreach.secFE.index gte ($items|@count / 2)}
                   <li>{$item->title}</li>
                {/if}
    {/foreach}
    </ul>