3列布局 - 循环动态数据

时间:2010-09-05 13:50:52

标签: php layout smarty template-engine

我的页面的一列(侧栏)中包含li的类别列表。我现在希望它在几列中跨越页面的整个宽度。我总是喜欢3或4列来适应页面。这是生成一列的代码。

        <div id="sidebar">
            <ul>
                {insert name=get_audio_categories assign=listcats}
                {section name=o loop=$listcats}
                <li><a href="{$baseurl}/z/{$listcats[o].CATID}/1/{$listcats[o].name}">{$listcats[o].name|stripslashes}</a> ({insert name=audio_categories_count value=a assign=atotal catid=$listcats[o].CATID}{$atotal} {$lang875}) </li>
                {/section}
            </ul>
        </div>

之前我曾问过类似的问题,但这是使用纯PHP和表格布局。我似乎无法在下面提取这个逻辑并应用于上面的smarty tpl文件:

$nbCols = 4;
$nbRows = count($indexes)/$nbCols;
for($row=0; $row<$nbRows; $row++) {
    echo "<tr>";
    for($i=0; $i<$nbCols; $i++) {
        $index = $indexes[$row + ($i*$nbRows)];
        echo "<td>$index</td><td><input id='$index' name='$index' type='checkbox' /></td>";
    }
    echo "</tr>";

我可以获得类别的总数。

感谢大家的帮助。

1 个答案:

答案 0 :(得分:1)

利用Smarty功能中的foreach构建来显示列。

示例可以在http://www.smarty.net/manual/en/language.function.foreach.php

找到

您需要从PHP代码中获取的所有内容都是一个包含您要显示的信息的数组。这与您使用section函数非常相似。