@7>
<@local(ps,name,root,myself,tagmode,num,max_depth)>
<@>
<$name = argv#0>
<$root = argv#1>
<$tagmode = argv#2>
<$ifset(tagmode, myself, "<@v.myself>?&t=", v.myself2)>
<$ps = v.load_plgset(name)>
<$num= v.plugin_num(name)>
<$max_depth = (ps.depth || 3)-1>
<@>
<@>-------------------------------------------------------------------
<@>再帰サブルーチン
<@>-------------------------------------------------------------------
<$sub = begin.function>
<@local(t, p, node, tree, depth, link)>
<$node = argv#0>
<$tree = node.children || array()>
<$depth = argv#1><@>prefix
<$p = "\t" %x depth>
<@p>
<@forexec(t, tree, begin.forexec)>
<$ifexec(tagmode, begin, begin)>
<$link = encode_uricom(link = t.name)>
<$else>
<$link = t.elink_key>
<@> / で始まるlink_keyに link_key_encode() での細工した先頭 ./ を除去する
<$ifset(substr(link,0,2) eq './', link, substr(link,2))>
<$end>
<$ifnext(t.tstat & v.tstat_nomenu)>
<@ifexec(t.children && depth
<@p> - <@link>")>"><@if(tagmode, t.sname, t.title)>
<@exec(sub, t, depth+1)>
<@p>
<$else>
<@p> - <@\>
<@link>")>"><@if(tagmode, t.sname, t.title)>
<$end>
<$end.forexec>
<@p>
<$end.function>
<@>-------------------------------------------------------------------
<@> コンテンツリスト
<@>-------------------------------------------------------------------
<@ifexec(root, begin)>
<@exec(sub, root, 0)>
<$end>