我有一个PHP页面,生成一个元素数组.为简单起见,我们假设它按数字顺序包含数字1-5.这些数字需要相等(或尽可能接近相等)分成两列(使用html表),如下所示:
1 4 2 5 3
列数可能会在将来发生变化.由于这是对表示级别的更改,因此我认为它应该是可以通过仅在模板文件中进行更改来实现的.这告诉我,应该处理将元素划分为列的Smarty.
有没有办法用Smarty(以及如何)实现这一点,还是应该让php文件完成所有工作?
可以巧妙地做到这一点,但由于HTML和CSS实际上并不支持列,因此很难做到.它涉及计算数组中有多少项,并首先使用{section}标签抓取项目的前半部分(向上舍入),并将它们显示在一列中,然后单独的{section}抓住第二列将项目的一半(四舍五入)放在第二列中.
对于{section},您可以指定要从哪个数组索引开始以及需要多少项.如果将数组中的项数设置为另一个变量,则可以计算它.
你可以尝试这样的代码 - 但我担心我没有测试过那些计算,所以它可能是错的......
{section name=myitem loop=$items max=(($itemcount/2)+0.499)} {$items[myitem]} {/section} {section name=myitem loop=$items start=(($itemcount/2)+0.499)} {$items[myitem]} {/section}