栏目怎么调用?导航和子栏目要在模板里怎么写?

已解决 提问于 2026-10-25 提问者:超级管理员 12 次阅读

我想在页头输出全站栏目导航,还要在侧栏输出某个栏目下的子栏目,模板里应该怎么循环?栏目链接用什么变量?

回答(2)

已采纳最佳答案
  • 2026-10-25 回答 最佳答案

    全站导航直接用 $nodes,它在任何页面都有(首页、栏目页、详情页、登录页都有,因为放在 siteVars 里):

    <nav>
      <ul>
        <li><a href="/">首页</a></li>
        {loop $nodes as $nav}
        <li>
          <a href="{$nav.url}">{$nav.name}</a>
          {if !empty($nav.children)}
          <ul>
            {loop $nav.children as $sub}
            <li><a href="{$sub.url}">{$sub.name}</a></li>
            {/loop}
          </ul>
          {/if}
        </li>
        {/loop}
      </ul>
    </nav>

    要点:

    1. $nodes 是按名称去重过的栏目树,子栏目在 children 里;
    2. 链接一律用 {$nav.url},不要自己拼 /list/xxx——入口模式、PATH_INFO、伪静态三种链接形态下拼出来的地址不一样,拼串必踩坑;
    3. {loop} 自带空值保护,列表为空整段不输出,不用再包一层 {if};
    4. 栏目页本身还能拿到 {$node.name}、{$node.description}、{$node.children}。
  • 2026-10-25 回答

    补充:如果只要"当前栏目下的子栏目",栏目页用 {$node.children} 即可,不必从 $nodes 里找。导航里不想出现的栏目,后台把它状态改成「隐藏」就行。

写回答

该问题已解决,不再接受新的采纳。