2012-08-23 44 views
2

有人可以帮我这个代码转换成智能型,从Here递归函数里面Smarty.tpl

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> 

但现在我有一个多层次的要求,请帮助我。

回答

0

您应该创建一个包含文件,其中包括每个新的级别... 将循环嵌套到新文件或创建一个smarty函数,然后包含它或调用smarty函数,并在IN本身(或称为功能)...

+0

嗯,包括smarty函数里面smarty ..永远不会这样...将搜索一些例子.. – lonelycrypto

+0

这是一个愚蠢的解决方案。在smarty中,您可以创建函数:http://www.smarty.net/docs/en/language.function.function.tpl – uzsolt

+0

正如我所说的...递归与包括OR函数,如果你有php的访问层 - - – TheHe

0

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

+0

谢谢,我知道它..我现在面临的问题是,我无法调用{block name =“content”}中的函数,该函数显示一个空白页面。 – lonelycrypto