首页/开发手册/导航菜单标签

开发手册

SoeayCMS 安装、标签使用与二次开发完整指南

导航菜单标签

导航菜单标签用于循环输出网站导航菜单,读取 soeay_content_sort 表数据(对应后台「内容栏目」)。全站任意页面均可使用。

一、基本语法

{soeay:nav num=10 parent=0}
    <a href="[soeay:link]">[soeay:name]</a>
{/soeay:nav}

二、参数说明

参数说明默认值
num显示数量,控制输出条数10
parent父栏目编码。不填或为空 = 输出顶级栏目(pcode 为空的一级菜单);
填某栏目 scode = 输出该栏目下的子菜单
顶级栏目
excludeexclude=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}判断。