我在表格中有3列,我的信息正确显示。但是,信息正在智能模板中水平显示。
1 2 3
4 5 6
7 8 9
如何垂直显示?
像这样:
1 4 7
2 5 8
3 6 9
我需要的是一个解决方案,类似于此: {html_table inner = rows cols = 3 loop = $ array}
{* Categories *}
{if !empty($categs)}
{if !empty($category.ID)}
<h3>{l}Books{/l}</h3>
{/if}
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
{foreach from=$categs item=cat name=categs}
{if ($smarty.foreach.categs.iteration mod $cats_per_col eq 1 and $cats_per_col gt 1) or $smarty.foreach.categs.first}<td>{/if}
<h2 {if !empty($category.ID)}class="blocktext"{/if}><a href="{if !empty($cat.URL)} {$cat.URL}{else}{$smarty.const.DOC_ROOT}/{$cat.CACHE_URL|escape}{/if}" {if $cat.NEW_WINDOW eq 1}target="blank"{/if} title="{$cat.TITLE|escape}" class="catHomeMain">{$cat.TITLE|escape} </a>{if $smarty.const.CATS_COUNT}{if !empty($cat.URL)}{else} <span class="catHomeCount">({$cat.COUNT})</span>{/if}{/if}</h2>
{* Display subcategories *}
{if !empty($cat.SUBCATS)}
{foreach from=$cat.SUBCATS item=scat name=scategs key=key}
{capture name="column"}{math equation="x % 3" x=$key}{/capture}
{if $smarty.capture.column == "0"}
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="177px">
<ul class="navcontainer"><li>
<a href="{if !empty($scat.URL)}{$scat.URL}{else} {$smarty.const.DOC_ROOT}/{$scat.CACHE_URL|escape}{/if}" {if $scat.NEW_WINDOW eq 1}target="blank"{/if} title="{$scat.TITLE|escape}" class="catHomeSub">{$scat.TITLE|escape}</a></li></ul>
</td>
{elseif $smarty.capture.column == "1"}
<td width="177px">
<ul class="navcontainer"><li>
<a href="{if !empty($scat.URL)}{$scat.URL}{else} {$smarty.const.DOC_ROOT}/{$scat.CACHE_URL|escape}{/if}" {if $scat.NEW_WINDOW eq 1}target="blank"{/if} title="{$scat.TITLE|escape}" class="catHomeSub">{$scat.TITLE|escape}</a>
</li></ul>
</td>
{elseif $smarty.capture.column == "2"}
<td width="177px">
<ul class="navcontainer"><li>
<a href="{if !empty($scat.URL)}{$scat.URL}{else} {$smarty.const.DOC_ROOT}/{$scat.CACHE_URL|escape}{/if}" {if $scat.NEW_WINDOW eq 1}target="blank"{/if} title="{$scat.TITLE|escape}" class="catHomeSub">{$scat.TITLE|escape}</a>
</li></ul>
</td>
</tr>
</table>
{/if}
{/foreach}
{if $smarty.capture.column != 2}
<!-- Close the table! -->
</tr></table>
{/if}
{/if}
{if ($smarty.foreach.categs.iteration mod $cats_per_col eq 0 and $cats_per_col gt 1) or $smarty.foreach.categs.last}</td>{/if}
{/foreach}
</tr>
</table>
<div class="break" style="height:20px;"></div>
{/if}
答案 0 :(得分:0)
这就是我的所作所为:
首先我在PHP文件中创建了一个数组:
$tpl->assign('old', array('item1','item3','item5','item2','item4','item6'));
然后在.TPL文件中我重写了这样的代码:
{if $cat.TITLE == "Old Books"}
<table>
<tr>
{section name=nr loop=$old}
<td style="width:177px;">
<ul class="navcontainer"><li>
<a href="{$smarty.const.DOC_ROOT}/{$old[nr]}/" title="{$old[nr]|replace:'_':' '|escape}" class="catHomeSub">{$old[nr]|replace:'_':' '|escape}</a></li></ul></td>
{if $smarty.section.nr.iteration % 3 == 0}
</tr>
<tr>
{/if}
{/section}
</tr>
</table>
这将在垂直“排序”的3列中输出数据。
item1 item3 item5
item2 item4 item6