网站的分类导航是用户体验和信息架构的基石。一个清晰、易于导航的分类列表,特别是能够支持多级嵌套的列表,能极大地提升用户查找信息的效率,并优化搜索引擎对网站结构的理解。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.HasChildren 为 true,就再次调用 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 %}