<ul>
{foreach from=$recommend item=value}
<li><span><em>{$value['content']}</em></span></li>
{/foreach}
</ul>
<ul>
{foreach from=$recommend item=value}
<li><h4>{$value['name']}</h4></li>
{/foreach}
</ul>
如果不使用smarty,上面的html可以通过 1 循环生成:
$html1 = $html2 = '<ul>';
foreach($recommend as $value)
{
$html1 .= '<li><span><em>' . $value['content'] . '</em></span></li>';
$html2 .= '<li><h4>' . $value['name'] . '</h4></li>';
}
$html1 .= '</ul>';
$html2 .= '</ul>';
$html = $html1 . $html2;
但是当需要聪明时,我不知道该怎么做。
答案 0 :(得分:1)
这适用于一个循环:
<ul>
{foreach from=$recommend item=value}
<li><span><em>{$value['content']}</em></span></li>
{capture name=list2}
<li><h4>{$value['name']}</h4></li>
{/capture}
{/foreach}
</ul>
<ul>
{$smarty.capture.list2}
</ul>
但正如其他人已经写过的那样,我没有看到这样做的重点,因为你的解决方案看起来更清晰。
答案 1 :(得分:0)
据我所知,这不能在Smarty中完成,因为Smarty无法在PHP中缓冲内容。
但是,我不明白为什么这是必要的。对我来说,它似乎是不必要的(并且令人困惑)代码化妆品。答案 2 :(得分:0)
这是我的实际问题,Category1~Category3
只能从$recommend
获得:
<ul class="sort clearfix">
<li class="curr"><span><em>Category1</em></span></li>
<li><span><em>Category2</em></span></li>
<li><span><em>Category3</em></span></li>
</ul>
<ul class="pic_txt_list clearfix">
{recommend path="1" limit=3}
{foreach from=$recommend item=value}
<li>
<script type="text/javascript">im_chat_now({$value['userid']},1)</script>
</li>
{/foreach}
{/recommend}
{recommend path="2" limit=3}
{foreach from=$recommend item=value}
<li>
<script type="text/javascript">im_chat_now({$value['userid']},1)</script>
</li>
{/foreach}
{/recommend}
{recommend path="3" limit=3}
{foreach from=$recommend item=value}
<li>
<script type="text/javascript">im_chat_now({$value['userid']},1)</script>
</li>
{/foreach}
{/recommend}
</ul>
答案 3 :(得分:0)
除非你获得显着的速度提升,否则我建议将它留在2个循环中,这样就更容易阅读。
如果没有,你可以使用smarty中的{php}标签来执行原始php(不知道它们是否默认实现)。