在网站建设和内容运营中,清晰的分类导航是用户体验的基础,也是内容组织的核心。对于使用 AnQiCMS 的用户来说,如何高效地展示网站的所有顶级分类列表,是构建网站结构的第一步。AnQiCMS 凭借其灵活的模板引擎和丰富的内置标签,让这项任务变得异常简单和直观。
理解分类结构与核心标签
在 AnQiCMS 中,内容是按照“内容模型”和“分类”来组织的。一个分类总是属于某个特定的内容模型(例如文章模型、产品模型等),并且分类之间可以存在层级关系。顶级分类,顾名思义,就是那些没有上级分类的分类,它们是分类层级结构的最顶端。
要显示这些顶级分类的列表,我们主要会用到 AnQiCMS 模板系统中的一个核心标签:categoryList。这个标签专门用于获取和展示分类数据,并且提供了多种参数来精准控制我们想要获取的分类范围。
如何显示所有顶级分类的列表
我们将通过以下步骤,详细讲解如何在 AnQiCMS 模板中显示所有顶级分类的列表。
首先,我们需要在模板文件中确定您希望展示这些分类列表的位置。这通常会在网站的导航栏、侧边栏或者首页的某个区域,例如 index.html(首页模板)或 partial/header.html(页头公共模板)等。
接下来,我们将使用 categoryList 标签来获取所需的分类数据。这个标签需要配置两个关键参数来精确地筛选出所有顶级分类:moduleId 和 parentId。
确定内容模型 ID (
moduleId) AnQiCMS 的分类是与内容模型紧密关联的。这意味着您需要告诉系统您想要获取哪个内容模型下的顶级分类。例如,如果您想获取“文章”内容模型下的顶级分类,通常其moduleId为1;如果是“产品”内容模型,moduleId通常为2。您可以在 AnQiCMS 后台的“内容管理” -> “内容模型”中查看或编辑每个模型的 ID。指定顶级分类 (
parentId="0") 为了确保只获取顶级分类,我们需要将parentId参数设置为0。在 AnQiCMS 中,parentId="0"明确表示该分类没有上级分类,即它是顶级分类。
有了这两个关键参数,我们就可以构建 categoryList 标签了。下面是一个获取所有“文章”模型下顶级分类的示例:
{% categoryList categories with moduleId="1" parentId="0" %}
{# 循环遍历获取到的顶级分类 #}
{% for item in categories %}
<li>
<a href="{{ item.Link }}">{{ item.Title }}</a>
{# 您也可以在这里添加其他分类信息,例如简介或缩略图 #}
{% if item.Description %}<p>{{ item.Description }}</p>{% endif %}
{% if item.Thumb %}<img src="{{ item.Thumb }}" alt="{{ item.Title }}"/>{% endif %}
</li>
{% empty %}
<li>暂无顶级分类信息。</li>
{% endfor %}
{% endcategoryList %}
在这段代码中:
{% categoryList categories with moduleId="1" parentId="0" %}:这行代码会从数据库中查询所有moduleId为1(文章模型) 且parentId为0(顶级分类) 的分类数据,并将结果存储在一个名为categories的变量中。{% for item in categories %}:这是一个循环结构,会逐一遍历categories变量中的每个分类。在每次循环中,当前分类的数据都会被赋值给item变量。{{ item.Link }}:显示当前分类的链接地址,点击后会跳转到该分类的列表页。{{ item.Title }}:显示当前分类的名称。{{ item.Description }}:显示当前分类的简介。{{ item.Thumb }}:显示当前分类的缩略图。{% empty %}:如果categories列表中没有任何数据,empty块内的内容(例如“暂无顶级分类信息。”)就会被显示出来。
通过这种方式,您可以在网站的任何位置灵活地展示所需内容模型的顶级分类列表。这种标签化的调用方式,大大简化了模板开发,让您可以更专注于网站设计和内容呈现。
进阶应用与实用技巧
- 展示多个内容模型的顶级分类: 如果您希望在一个页面上同时展示文章和产品的顶级分类,可以分别使用
moduleId为1和2的categoryList标签,并将其显示在不同的区域。 - 判断当前分类是否被选中: 在构建导航菜单时,您可能希望突出显示用户当前正在访问的分类。
item变量中有一个IsCurrent字段,它是一个布尔值。您可以使用{% if item.IsCurrent %}来为当前选中项添加 CSS 类,从而实现高亮效果。 - 将代码模块化: 为了保持模板文件的整洁和可维护性,建议将这种常用的分类列表代码片段放到一个独立的 partial 文件中,例如
partial/top_categories.html,然后在需要的地方使用{% include "partial/top_categories.html" %}进行引用。
通过 AnQiCMS 的 categoryList 标签,显示所有顶级分类的列表变得轻而易举,极大地提升了网站结构的灵活性和内容组织的效率。
常见问题 (FAQ)
如何获取特定内容模型(如“产品”)的顶级分类? 您只需调整
moduleId参数的值。例如,要获取产品模型的顶级分类,可以将moduleId="1"改为moduleId="2"(具体 ID 请根据您后台的设置确认)。我可以控制顶级分类的显示顺序吗? 是的,您可以在 AnQiCMS 后台的“内容管理”->“文档分类”中编辑每个分类,其中有一个“显示顺序”字段。数字越小,分类在列表中显示的位置越靠前。AnQiCMS 的
categoryList标签默认会按照这个顺序进行展示。如何展示顶级分类下的子分类列表? 要展示子分类,您可以在遍历顶级分类的
for循环内部,再次使用categoryList标签,并将parentId设置为当前顶级分类的item.Id。同时,item变量还有一个HasChildren字段可以判断当前分类是否有子分类,帮助您决定是否需要嵌套展示。 例如:{% for item in categories %} <li><a href="{{ item.Link }}">{{ item.Title }}</a></li> {% if item.HasChildren %} <ul> {% categoryList subCategories with parentId=item.Id %} {% for subItem in subCategories %} <li><a href="{{ subItem.Link }}">{{ subItem.Title }}</a></li> {% endfor %} {% endcategoryList %} </ul> {% endif %} {% endfor %}