Smarty.tpl中的递归函数

时间:2012-08-23 05:50:20

标签: php smarty

有人可以帮助我将此代码转换为智能友好型,取自Here

function outputCategories($categories, $startingLevel = 0)  
{

    foreach ($categories as $key => $category)
    { 
        if (count($category['children']) > 0)
        {
            echo '<li><a title="'.$category['name'].'" href="'.$category['url'].'">'.$category['name'].'</a><ul>';
            outputCategories($category['children'], $startingLevel+1);
            echo "</li>";
        }
        else
        {
            echo '<li><a title="'.$category['name'].'" href="'.$category['url'].'">'.$category['name'].'</a></li>';
        }
    }
    echo "</ul>";
    return self;
}

我可以使用以下行生成单级别类别:

{foreach from=$hsitemap item=c name=hsitemap}
 {if $c.parent_id ==0 }
<li><h2><a title="{$c.site_name}" href="{$c.site_url}">{$c.site_name}</a></h2><ul>
    {foreach item=d from=$c.children name=sitemap} 
<li><a title="{$d.site_name}" href="{$d.site_url}">{$d.site_name}</a></li>
    {/foreach}
{else}  
<li><h2><a title="{$c.site_name}" href="{$c.site_url}">{$c.site_name}</a></h2><ul>
{/if}
</ul>
</li>
{/foreach}  
</ul>

但是现在我需要多级,请帮助我。

2 个答案:

答案 0 :(得分:0)

你应该制作一个包含自己每个新级别的包含文件...... 将循环嵌套到一个新文件或创建一个smarty-function,然后包含它或调用smarty-function,并在IN IT中调用它自己(或调用该函数)......

答案 1 :(得分:0)

您可以创建可以自行调用的函数,请参阅文档中的example 7.43.