网站的分类导航是用户体验和信息架构的基石。一个清晰、易于导航的分类列表,特别是能够支持多级嵌套的列表,能极大地提升用户查找信息的效率,并优化搜索引擎对网站结构的理解。AnQiCMS 提供了强大而灵活的模板标签,让您轻松实现这一需求。

AnQiCMS 中的分类管理基础

在 AnQiCMS 的后台,您可以在“内容管理”模块下的“文档分类”中创建和组织您的网站分类。创建分类时,您可以为它指定所属的内容模型(例如,文章、产品等),并设定其上级分类,从而构建出清晰的层级关系。例如,您可以有一个“新闻中心”的一级分类,下面再创建“公司动态”、“行业资讯”等二级分类。这种层级结构是前端多级嵌套展示的基础。

核心:理解 categoryList 标签

AnQiCMS 模板中用于获取分类数据的核心工具是 categoryList 标签。这个标签非常灵活,通过调整其参数,您可以精确控制要显示哪些分类以及如何显示。

在使用 categoryList 时,几个关键参数需要您了解:

  • moduleId:指定您想要获取哪个内容模型下的分类。例如,如果您的文章模型ID是1,产品模型ID是2,通过设置 moduleId="1" 就能只获取文章分类。
  • parentId:这是实现多级嵌套的关键参数。当您将其设置为 0 时,它会返回所有顶级分类。如果您想获取某个特定分类的子分类,可以将 parentId 设置为该分类在循环中获得的 Id 属性。
  • limit:控制返回分类的数量。
  • siteId:如果您启用了多站点功能,可以通过此参数指定从哪个站点获取分类数据。

categoryList 标签的 for 循环中,每个分类项(通常命名为 item)都会提供一些有用的属性,例如:

  • item.Id:分类的唯一标识符。
  • item.Title:分类的显示名称。
  • item.Link:分类页面的链接地址。
  • item.HasChildren:一个布尔值,指示当前分类是否包含子分类,这对于构建动态嵌套菜单至关重要。

构建一级分类列表

最简单的应用是显示所有顶级分类,这通常构成您网站的主导航。您可以使用 moduleId 来指定内容模型,并通过设置 parentId="0" 来获取所有顶级分类。

{% categoryList categories with moduleId="1" parentId="0" %}
    <ul>{# 这将是一个无序列表,包含所有顶级分类 #}
        {% for item in categories %}
            <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
        {% endfor %}
    </ul>
{% endcategoryList %}

实现多级嵌套分类展示

要实现多级嵌套分类列表,您可以利用 categoryList 标签的嵌套特性和 item.HasChildren 属性。在每个分类的循环内部,如果 item.HasChildrentrue,就再次调用 categoryList 标签来获取其子分类,并将 parentId 设置为当前分类的 item.Id。这样可以逐层深入,构建出任意深度的嵌套结构。

以下是一个三级分类嵌套的示例代码,您可以根据实际需求增加或减少层级:

”`twig {% categoryList categories with moduleId=“1” parentId=“0” %}

<ul class="main-category-list">{# 一级分类列表 #}
    {% for item in categories %}
        <li>
            <a href="{{ item.Link }}">{{ item.Title }}</a>
            {% if item.HasChildren %}
                <ul class="sub-category-list">{# 二级分类列表 #}
                    {% categoryList subCategories with parentId=item.Id %}
                        {% for subItem in subCategories %}
                            <li>
                                <a href="{{ subItem.Link }}">{{ subItem.Title }}</a>
                                {% if subItem.HasChildren %}
                                    <ul class="third-category-list">{# 三级分类列表 #}
                                        {% categoryList thirdCategories with parentId=subItem.Id %}
                                            {% for thirdItem in thirdCategories %}
                                                <li><a href="{{ thirdItem.Link }}">{{ thirdItem.Title }}</a></li>
                                            {% endfor %}
                                        {% endcategoryList %}
                                    </ul>
                                {% endif %}
                            </li>
                        {% endfor %}
                    {% endcategoryList %}