AnQiCMS的导航列表标签如何构建多级下拉菜单并显示?

📅 👁️ 66

网站导航作为用户探索网站内容的核心入口,其结构设计直接影响着用户体验和信息获取效率。特别是多级下拉菜单,它能够有效地组织大量信息,使网站结构更清晰、更具层次感。在安企CMS中,构建并显示这样的多级导航系统,过程既灵活又直观。

要成功搭建多级下拉菜单,我们需要将后台的导航配置与前端模板的标签调用相结合。

第一步:理解安企CMS导航列表的数据结构与后台配置

在安企CMS中,构建多级下拉菜单首先要从后台的导航设置入手。进入后台的后台设置 -> 网站导航设置页面,您会看到导航类别管理导航链接设置两个核心区域。

1. 导航类别管理: 系统默认提供一个“默认导航”类别,您可以根据实际需求,如“主导航”、“页脚导航”或“侧边栏导航”,通过自定义导航类别来创建新的导航组。这样做的好处是,可以针对网站不同区域的导航,进行独立的管理和调用。

2. 导航链接设置: 这是创建具体导航菜单项的地方。每个导航链接都承载着具体的信息,例如显示的名称、链接地址等。

  • 显示名称与子标题名称/导航描述: 这些字段允许您为导航项设置友好的显示文本,甚至可以添加辅助性的子标题或描述,以提供更丰富的信息。
  • 链接类型: 安企CMS支持多种链接类型,包括指向站内核心页面的内置链接(如首页、模型首页)、指向特定分类页面链接(文章分类、产品分类或单页面),以及完全自定义的外部链接。这极大地增加了导航的灵活性。
  • 上级导航: 这是实现多级菜单的关键所在。当你需要创建一个二级菜单项时,只需将其上级导航设置为对应的一级菜单即可。例如,您创建了一个名为“产品中心”的一级导航,然后可以创建“产品A”、“产品B”等二级导航,并将它们的上级导航都指定为“产品中心”。
  • 显示顺序: 通过调整显示顺序的数字,您可以控制导航项在同一层级中的排列位置,数字越小越靠前。

需要注意的是,安企CMS目前原生支持最多两级的导航列表。这意味着您可以创建一级菜单和其下的二级菜单,但不支持三级或更多层级的嵌套。

第二步:掌握导航列表标签 navList 的使用

当后台导航结构配置完毕后,接下来就是在前端模板中通过navList标签将其展现出来。navList标签是安企CMS提供的一个强大工具,用于获取并循环输出后台配置的导航数据。

其基本使用方法如下:

{% navList navs %}
    {# 循环输出一级导航项 #}
    {%- for item in navs %}
        <li class="{% if item.IsCurrent %}active{% endif %}">
            <a href="{{ item.Link }}">{{item.Title}}</a>
            {# 判断是否存在二级导航,并循环输出 #}
            {%- if item.NavList %}
            <dl>
                {%- for inner in item.NavList %}
                    <dd class="{% if inner.IsCurrent %}active{% endif %}">
                        <a href="{{ inner.Link }}">{{inner.Title}}</a>
                    </dd>
                {% endfor %}
            </dl>
            {% endif %}
        </li>
    {% endfor %}
{% endnavList %}

在这段代码中:

  • {% navList navs %} 声明了将获取到的导航数据赋值给名为navs的变量。
  • {%- for item in navs %} 用于遍历所有的一级导航项。item变量代表当前的一级导航对象。
    • item.Title:显示导航项的名称。
    • item.Link:导航项的链接地址。
    • item.IsCurrent:一个布尔值,表示当前导航项是否为当前页面的链接,常用于添加active类以高亮显示。
  • {%- if item.NavList %} 是判断当前一级导航项是否包含子菜单的关键。如果item.NavList存在,则表示有二级导航。
  • {%- for inner in item.NavList %} 用于遍历当前一级导航项下的所有二级导航。inner变量代表当前的二级导航对象,它也拥有TitleLinkIsCurrent等属性。

如果您在后台创建了多个导航类别,可以通过typeId参数来指定调用某个特定的导航组,例如:{% navList navs with typeId=2 %}

第三步:实战案例与高级应用

为了更好地展示navList标签的灵活性,以下提供几个实战案例,帮助您构建不同形式的多级下拉菜单。

案例一:构建一个简单的两级标准下拉菜单

这种菜单通常用于网站顶部,当鼠标悬停在一级菜单上时,其下的二级菜单会展开。

<nav class="main-nav">
    <ul class="nav-list">
        {% navList navs with typeId=1 %} {# 假设typeId=1是主导航 #}
        {%- for item in navs %}
            <li class="nav-item {% if item.NavList %}has-dropdown{% endif %} {% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}">{{item.Title}}</a>
                {%- if item.NavList %}
                <ul class="dropdown-menu">
                    {%- for inner in item.NavList %}
                        <li class="dropdown-item {% if inner.IsCurrent %}active{% endif %}">
                            <a href="{{ inner.Link }}">{{inner.Title}}</a>
                        </li>
                    {% endfor %}
                </ul>
                {% endif %}
            </li>
        {% endfor %}
        {% endnavList %}
    </ul>
</nav>

这个结构需要配合CSS来控制下拉菜单的显示/隐藏(例如使用:hover),以及JavaScript来实现更复杂的交互效果。

案例二:导航下拉菜单中显示分类下的文档列表

在某些场景下,您可能希望二级菜单不仅仅是链接,而是直接展示某个分类下的最新文章或产品。这可以通过在navList内部结合archiveList标签来实现。

<nav class="main-nav">
    <ul class="nav-list">
        {% navList navs with typeId=1 %}
        {%- for item in navs %}
            <li class="nav-item {% if item.NavList %}has-dropdown{% endif %} {% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}">{{item.Title}}</a>
                {%- if item.NavList %}
                <ul class="dropdown-menu">
                    {%- for inner in item.NavList %}
                        <li class="dropdown-item">
                            <a href="{{ inner.Link }}">{{inner.Title}}</a>
                            {# 如果二级导航是分类页面,且存在对应的PageId,则可以调用该分类下的文档 #}
                            {% if inner.PageId > 0 %}
                                {% archiveList products with type="list" categoryId=inner.PageId limit="5" %}
                                {% if products %}
                                <ul class="category-products">
                                    {% for product in products %}
                                    <li><a href="{{product.Link}}">{{product.Title}}</a></li>
                                    {% endfor %}
                                </ul>
                                {% endif %}
                                {% endarchiveList %}
                            {% endif %}
                        </li>
                    {% endfor %}
                </ul>
                {% endif %}
            </li>
        {% endfor %}
        {% endnavList %}
    </ul>
</nav>

这里,inner.PageId是关键,它会获取二级导航所关联的分类或单页的ID。我们利用这个ID在archiveList中筛选出对应分类下的文章或产品。

案例三:导航下拉菜单中显示下级分类列表

如果您希望二级菜单显示的是某个一级分类下的所有子分类,而不是具体的文档,可以结合categoryList标签。

”`

相关文章

如何在AnQiCMS模板中显示网站的Logo、备案号和版权信息?

在构建一个专业的网站时,除了展示核心内容,一些基础而重要的信息也不可或缺,例如网站Logo、备案号以及版权声明。这些元素不仅有助于提升网站的专业形象和用户信任度,也是遵守特定地区法规(尤其是中国大陆的备案要求)的关键。在安企CMS(AnQiCMS)中,你可以通过简洁的模板标签,轻松地在网站模板中显示这些信息。 AnQiCMS采用了类似Django的模板引擎语法,使得模板文件的编写直观而高效

2025-11-08

AnQiCMS如何批量重新生成缩略图以适应新的显示尺寸或格式(如WebP)?

在网站运营中,图片是吸引访客、传递信息不可或缺的元素,而缩略图在内容列表、文章推荐等场景中扮演着提升页面美观度和加载效率的关键角色。但随着网站设计迭代、显示设备多样化以及性能优化的需求不断提升,原有的缩略图尺寸或格式可能不再适用。例如,为了提升网站加载速度,将所有图片转换为更高效的WebP格式,或者为了适应全新的响应式布局,需要调整缩略图的显示尺寸。 面对这种情况

2025-11-08

如何配置AnQiCMS的缩略图处理方式,以确保图片在前端的统一显示效果?

在AnQiCMS中,图片的统一显示效果对于网站的整体美观和用户体验至关重要,特别是缩略图。无论是文章列表、产品展示还是分类页面,保持缩略图的尺寸和风格一致,能让网站看起来更专业、更易于浏览。AnQiCMS为此提供了灵活的配置选项,让我们可以轻松实现这一目标。 ### 定位缩略图设置:内容设置是关键 要开始配置缩略图,我们需要登录到AnQiCMS的后台管理界面。在左侧导航栏中找到“系统设置”

2025-11-08

AnQiCMS如何控制不同用户组对特定内容的访问和显示权限,实现内容变现?

在内容运营的实践中,有效地管理不同用户对内容的访问权限,是实现内容价值变现的关键一环。许多内容创作者和企业都希望能够针对不同层级的用户提供差异化的内容服务,例如付费会员专享、VIP内容预览,或是根据用户等级解锁更多深度资料。AnQiCMS 提供了一套行之有效且灵活的功能,帮助我们轻松实现这些需求。 ### 核心机制:用户分组与内容权限层级 AnQiCMS

2025-11-08

AnQiCMS的“全站内容替换”功能如何批量更新显示文本和链接?

AnQiCMS的“全站内容替换”功能:批量更新网站文本与链接的高效利器 在网站运营的日常工作中,内容更新和维护是不可或缺的一环。无论是为了适应新的内容策略、优化搜索引擎排名,还是仅仅为了修正一个拼写错误或更新一个失效链接,手动逐条修改海量内容无疑是耗时耗力的。幸运的是,AnQiCMS 提供了一项名为“全站内容替换”的强大功能,它能够帮助用户批量、高效地完成这些任务,极大提升运营效率

2025-11-08

如何在AnQiCMS的单页面中显示自定义的Banner图片和内容?

在网站运营中,精心设计的单页面往往承担着品牌展示、产品介绍或特定活动推广的重要作用。一个引人注目的Banner区域,能够迅速抓住访客的注意力,传达核心信息。AnQiCMS 作为一个灵活的内容管理系统,提供了非常便捷的方式,让您在单页面中轻松设置并展示自定义的Banner图片与内容。 接下来,我们将一起探索如何在 AnQiCMS 中实现这一功能。 ## 第一步

2025-11-08

AnQiCMS如何确保 Markdown 编辑器中插入的数学公式和流程图在前台正常显示?

在现代网站内容创作中,Markdown以其简洁高效的特点,受到了广大内容创作者的青睐。然而,对于需要呈现复杂信息,如数学公式和流程图的网站而言,如何在Markdown编辑器中无缝插入并确保它们在前台正常显示,常常是内容运营者面临的挑战。安企CMS(AnQiCMS)深知这一需求,通过灵活的配置与标准化的引入方式,让这些复杂的元素也能在您的网站上优雅地呈现

2025-11-08

如何使用AnQiCMS过滤器对显示内容进行字符串截断、大小写转换等处理?

在使用AnQiCMS进行网站内容管理时,我们常常会遇到需要对显示的内容进行一些微调的情况,比如一篇文章的标题太长了,我们希望它只显示一部分并以省略号结尾;或者有些文字希望统一以大写或小写显示。AnQiCMS强大的模板过滤器功能就能轻松帮我们实现这些需求,无需修改任何后端代码,直接在模板层面就能完成。 模板过滤器是AnQiCMS模板语言中的一个实用工具,它允许我们对模板变量的值进行转换

2025-11-08