{function} 模板函数

{function}用于在模板内创建函数,这些函数可以像插件函数一样调用。 用这个方式来代替写插件来显示内容,更具有可管理性。 这也可以简化数据的复杂度,如多层结构的菜单。

{function}标签必须设置fn属性, 也就是模板函数的名称。 该名称可以用于调用模板函数。

可以按属性的方式传递给模板函数变量默认值。 和javascript函数定义一样,你只可以使用标量值作为默认。 默认值可以被覆盖,当模板函数被调用的时候。

你可以在调用模板函数内使用当前模板的全部变量,在模板内使用{assign}创建或修改的变量就不能被模板函数内访问了。

{function}  定义的函数 必须 使用  {call}  标签来调用执行.

参数名 类型 必需 说明
fn sting Yes 函数名称
var…. any No 参数值定义

 

{* this will print literal delimiters out of the template *}
{assign var=list value=[
['name'=>'目录1','items'=>[['name'=>'目录1-导航1'],['name'=>'目录1-导航2'],['name'=>'目录1-导航3']]],
['name'=>'目录2','items'=>[['name'=>'目录2-导航1'],['name'=>'目录2-导航2'],['name'=>'目录2-导航3']]]
]}

{function fn=menu data=[] level=0}
    <ul class="level{$level}">
        {foreach from=$data item=entry}
            {if isset($entry.items)}
                <li>{$entry.name}</li>
                {* 递归调用 *}
                {call fn=menu data=$entry.items level=$level+1}
            {else}
                <li>{$entry.name}</li>
            {/if}
        {/foreach}
    </ul>
{/function}

//调用函数-----------
{call fn=menu data=$list}

 

 

上一篇:{literal}原样输出
下一篇:{call} 执行函数
Copyright © 2021 海南的叶子 All Rights Reserved 琼ICP备2021000725号

琼公网安备 46900702000037号