导航菜单标签
导航菜单标签用于循环输出网站导航菜单,读取 soeay_content_sort 表数据(对应后台「内容栏目」)。全站任意页面均可使用。
一、基本语法
{soeay:nav num=10 parent=0}
<a href="[soeay:link]">[soeay:name]</a>
{/soeay:nav}二、参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
| num | 显示数量,控制输出条数 | 10 |
| parent | 父栏目编码。不填或为空 = 输出顶级栏目(pcode 为空的一级菜单); 填某栏目 scode = 输出该栏目下的子菜单 | 顶级栏目 |
| exclude | exclude=10 即排除 scode=10 的栏目 |
动态取值技巧(对标 PbootCMS):
parent={soeay:sort.scode}—— 输出当前栏目下的子菜单(做左侧/下拉子导航)。parent={soeay:sort.pcode}—— 输出当前栏目的同级菜单(兄弟栏目)。parent={soeay:sort.tcode}—— 输出当前顶级栏目下的子菜单。
三、循环体内可用字段
| 字段 | 说明 |
|---|---|
| [soeay:i] / [soeay:num] | 序号,从 1 开始 |
| [soeay:id] | 栏目记录 ID |
| [soeay:scode] | 当前栏目编码(用于高亮判断、生成子菜单) |
| [soeay:pcode] | 父栏目编码 |
| [soeay:name] | 栏目名称 |
| [soeay:subname] | 栏目副名称 |
| [soeay:filename] | 栏目 URL 标识 |
| [soeay:ico] | 栏目图标 |
| [soeay:link] / [soeay:url] | 栏目链接(若设置了「跳转链接 outlink」则直接返回外链地址) |
| [soeay:outlink] | 后台设置的跳转外链地址(为空时此字段为空串) |
注意:本系统通过[soeay:outlink]区分内链/外链;设置外链后[soeay:link]会自动返回该外链。
四、导航高亮(当前栏目加 class)
用{soeay:if}条件标签判断「当前栏目的编码」与「循环项栏目编码」是否一致,条件为真时输出class="active"。注意:if 标签应写在 HTML 开始标签内、但不要嵌在class="..."引号里,否则会破坏 HTML 结构。
顶部导航高亮示例(按顶级栏目匹配):
{soeay:nav num=10}
<li>
<a href="[soeay:link]" {soeay:if('[soeay:scode]'=='{soeay:sort.tcode}')}class="active"{/soeay:if}>[soeay:name]</a>
</li>
{/soeay:nav}首页高亮示例:首页不是后台栏目,通常写在导航第一项,通过判断当前是否不在任何栏目({soeay:sort.scode}为空)来实现。
<li {soeay:if('{soeay:sort.scode}'=='')}class="active"{/soeay:if}>
<a href="/">首页</a>
</li>
{soeay:nav num=10}
<li>
<a href="[soeay:link]" {soeay:if('[soeay:scode]'=='{soeay:sort.tcode}')}class="active"{/soeay:if}>[soeay:name]</a>
</li>
{/soeay:nav}五、二级导航 / 子菜单(嵌套写法)
本系统通过两个独立的{soeay:nav}实现层级:外层输出顶级栏目,内层用parent=[soeay:scode]输出当前循环项的子栏目。
{soeay:nav num=10}
<li>
<a href="[soeay:link]">[soeay:name]</a>
{soeay:nav parent=[soeay:scode] num=10}
<ul>
<li><a href="[soeay:link]">[soeay:name]</a></li>
</ul>
{/soeay:nav}
</li>
{/soeay:nav}若只需在某个栏目页展示其下子菜单(如左侧导航),单独使用即可:
{soeay:nav parent={soeay:sort.scode} num=10}
<li>
<a href="[soeay:link]" {soeay:if('[soeay:scode]'=='{soeay:sort.scode}')}class="active"{/soeay:if}>[soeay:name]</a>
</li>
{/soeay:nav}六、使用场景
- 顶部主导航、底部导航:用默认顶级
{soeay:nav}。 - 下拉菜单 / 侧边子导航:用「五、二级导航 / 子菜单(嵌套写法)」的写法或
parent={soeay:sort.scode}。 - 面包屑当前位置高亮:结合
{soeay:sort.tcode}判断。
