`navList`标签在安企CMS模板中如何调用自定义导航类别?

作为一位深谙安企CMS运作的网站运营人员,我深知一套清晰、高效的导航系统对用户体验和网站SEO的重要性。在安企CMS中,navList标签是构建灵活多变导航菜单的核心工具。它不仅能帮助您展现标准的顶部导航,更能让您轻松调用并自定义各类导航类别,以满足网站多样化的布局需求,例如页脚导航、侧边栏导航,甚至是针对特定页面的上下文导航。

理解安企CMS的自定义导航类别

在深入navList标签的具体调用方式之前,我们首先要明确安企CMS中“自定义导航类别”的概念。安企CMS提供了一个直观的后台管理界面来创建和管理不同用途的导航菜单。

您可以通过导航设置功能,进入“导航类别管理”部分。在这里,除了系统默认的主导航类别外,您可以根据网站需求添加新的导航类别,例如命名为“页脚导航”、“产品分类导航”或“服务特色导航”等。每一个新创建的导航类别都会被系统分配一个唯一的typeId(类别ID)。这个typeId便是我们在模板中调用特定自定义导航的关键参数。

在创建了自定义导航类别后,您可以在其下方添加具体的导航链接。这些链接可以是指向站内内置页面、分类页面,也可以是任意的外部链接。通过合理配置这些导航链接及其层级(安企CMS支持两级导航),您就为网站的前端展示准备好了丰富的数据源。

navList标签的基础调用与参数解析

navList标签是安企CMS模板中用于获取导航列表的核心标签。其基本语法结构如下:

{% navList 变量名称 %}
    {# 循环输出导航项的代码 #}
{% endnavList %}

在这里,变量名称是您为获取到的导航数据自定义的一个名称,例如常用的navsmainNav。这个变量将是一个数组对象,您需要使用for循环来遍历并渲染其中的每一个导航项。

navList标签支持以下核心参数,其中typeId是实现自定义导航类别调用的关键:

  • typeId: 这个参数是用于指定您想要调用的导航类别的ID。默认情况下,如果您不设置此参数,navList将调用系统默认的导航类别(通常typeId为1)。当您在后台创建了名为“页脚导航”并其typeId为2的导航类别时,您就可以通过typeId=2来精准调用它。
  • siteId: 对于部署了多个站点的安企CMS系统,如果您希望调用其他站点下的导航数据,可以通过此参数指定站点的ID。在单站点环境下,通常无需设置此参数。

导航项(item)的可用字段

for循环中,每个导航项(通常命名为item)都包含了以下字段,供您在模板中灵活使用:

  • Title: 导航项的显示名称,即您在后台设置的“显示名称”。
  • SubTitle: 导航项的副标题,用于实现双标题显示效果。
  • Description: 导航项的描述信息。
  • Link: 导航项指向的URL链接。
  • PageId: 如果导航项链接类型为分类或单页面,此字段会包含对应分类或单页面的ID。这对于在导航中进一步调用相关内容非常有用。
  • IsCurrent: 一个布尔值,表示当前导航项是否为当前页面所对应的活动导航项,常用于添加active类名实现高亮。
  • NavList: 如果当前导航项有下级导航,这个字段将是一个包含下级导航项的数组。您可以使用嵌套的for循环来渲染二级导航。

调用自定义导航类别的实践示例

假设您在安企CMS后台创建了一个名为“页脚导航”的自定义导航类别,并且其typeId为2。现在我们来演示如何在模板中调用它,并展示其两级导航结构:

{# 假设这是您的页脚模板文件,例如 partial/footer_nav.html #}
<nav class="footer-nav">
    <h3>网站导航</h3>
    <ul>
        {# 通过 typeId 参数调用 ID 为 2 的“页脚导航”类别 #}
        {% navList footerNavs with typeId=2 %}
            {%- for item in footerNavs %}
            {# 检查当前导航项是否有子导航 #}
            <li class="footer-nav-item {% if item.IsCurrent %}active{% endif %}">
                <a href="{{ item.Link }}" title="{{ item.Title }}">
                    {{ item.Title }}
                    {% if item.SubTitle %}<span>{{ item.SubTitle }}</span>{% endif %}
                </a>
                {%- if item.NavList %}
                {# 如果有子导航,则进行嵌套循环渲染二级导航 #}
                <ul class="footer-sub-nav">
                    {%- for subItem in item.NavList %}
                    <li class="footer-sub-nav-item {% if subItem.IsCurrent %}active{% endif %}">
                        <a href="{{ subItem.Link }}" title="{{ subItem.Title }}">
                            {{ subItem.Title }}
                        </a>
                    </li>
                    {% endfor %}
                </ul>
                {% endif %}
            </li>
            {% endfor %}
        {% endnavList %}
    </ul>
</nav>

在上面的示例中,typeId=2明确告诉navList标签去获取ID为2的导航类别数据。通过两层for循环,我们能够优雅地渲染出包含子导航的页脚菜单。

更进一步,假设您想在特定导航菜单中,不仅显示二级导航项,如果二级导航项关联了分类(通过PageId),还想列出该分类下的部分文档,可以这样实现:

{# 这是一个更复杂的导航示例,可能用于主导航菜单 #}
<ul class="main-navigation">
    {% navList mainNav with typeId=1 %} {# 假设主导航的 typeId 为 1 #}
        {%- for item in mainNav %}
        <li class="nav-item {% if item.IsCurrent %}active{% endif %}">
            <a href="{{ item.Link }}" title="{{ item.Title }}">{{ item.Title }}</a>
            {%- if item.NavList %} {# 如果有一级子菜单 #}
            <ul class="submenu">
                {%- for subItem in item.NavList %}
                <li class="submenu-item {% if subItem.IsCurrent %}active{% endif %}">
                    <a href="{{ subItem.Link }}" title="{{ subItem.Title }}">{{ subItem.Title }}</a>
                    {%- if subItem.PageId > 0 %} {# 如果二级导航项关联了分类 #}
                        {# 假设关联的分类 ID 在 subItem.PageId 中 #}
                        {% archiveList relatedDocs with type="list" categoryId=subItem.PageId limit="5" %}
                        {% if relatedDocs %}
                        <ul class="related-docs-list">
                            {% for doc in relatedDocs %}
                            <li><a href="{{ doc.Link }}" title="{{ doc.Title }}">{{ doc.Title }}</a></li>
                            {% endfor %}
                        </ul>
                        {% endif %}
                        {% endarchiveList %}
                    {% endif %}
                </li>
                {% endfor %}
            </ul>
            {% endif %}
        </li>
        {% endfor %}
    {% endnavList %}
</ul>

在这个进阶示例中,我们结合了navListarchiveList标签,实现了在主导航的二级菜单中动态显示关联分类下的文档。这极大地提升了导航的实用性和信息密度。

总结

navList标签是安企CMS模板制作中不可或缺的强大工具。通过灵活运用typeId参数,并结合对item变量字段的深刻理解,您可以构建出高度定制化、功能丰富的网站导航系统。这不仅能优化网站的用户体验,也能为搜索引擎提供更清晰的网站结构信息,从而间接提升SEO效果。熟练掌握navList的调用方式,将使您在安企CMS的内容管理和网站运营中游刃有余。


常见问题解答 (FAQ)

1. 如何在安企CMS后台创建一个自定义导航类别?

您可以在安企CMS后台导航到“后台设置” -> “导航设置”。在导航设置页面中,找到“导航类别管理”部分,点击“添加导航类别”按钮。输入您希望的类别名称(例如“页脚导航”),然后保存。系统会自动为这个新的类别分配一个typeId。您可以在列表中查看到这个typeId,并在模板中通过typeId参数来调用它。

2. navList标签支持多少层级的导航显示?

安企CMS的navList标签原生支持两级导航的显示。也就是说,您可以设置一级导航菜单,并在每个一级导航项下设置一个二级导航菜单。如果您的设计需要更深层次的导航,您可能需要考虑调整网站的信息架构,或者通过自定义开发实现更复杂的导航结构。

3. 如何让当前页面对应的导航项高亮显示?

navList标签的item变量中包含一个IsCurrent字段。这是一个布尔值,当当前导航项是当前页面链接时,其值为true。您可以在模板中使用条件判断来为IsCurrenttrue的导航项添加特定的CSS类(例如active),从而实现高亮显示。例如:<li class="{% if item.IsCurrent %}active{% endif %}">...</li>