AnQiCMS如何显示所有顶级分类的列表?

在网站建设和内容运营中,清晰的分类导航是用户体验的基础,也是内容组织的核心。对于使用 AnQiCMS 的用户来说,如何高效地展示网站的所有顶级分类列表,是构建网站结构的第一步。AnQiCMS 凭借其灵活的模板引擎和丰富的内置标签,让这项任务变得异常简单和直观。

理解分类结构与核心标签

在 AnQiCMS 中,内容是按照“内容模型”和“分类”来组织的。一个分类总是属于某个特定的内容模型(例如文章模型、产品模型等),并且分类之间可以存在层级关系。顶级分类,顾名思义,就是那些没有上级分类的分类,它们是分类层级结构的最顶端。

要显示这些顶级分类的列表,我们主要会用到 AnQiCMS 模板系统中的一个核心标签:categoryList。这个标签专门用于获取和展示分类数据,并且提供了多种参数来精准控制我们想要获取的分类范围。

如何显示所有顶级分类的列表

我们将通过以下步骤,详细讲解如何在 AnQiCMS 模板中显示所有顶级分类的列表。

首先,我们需要在模板文件中确定您希望展示这些分类列表的位置。这通常会在网站的导航栏、侧边栏或者首页的某个区域,例如 index.html(首页模板)或 partial/header.html(页头公共模板)等。

接下来,我们将使用 categoryList 标签来获取所需的分类数据。这个标签需要配置两个关键参数来精确地筛选出所有顶级分类:moduleIdparentId

  1. 确定内容模型 ID (moduleId) AnQiCMS 的分类是与内容模型紧密关联的。这意味着您需要告诉系统您想要获取哪个内容模型下的顶级分类。例如,如果您想获取“文章”内容模型下的顶级分类,通常其 moduleId1;如果是“产品”内容模型,moduleId 通常为 2。您可以在 AnQiCMS 后台的“内容管理” -> “内容模型”中查看或编辑每个模型的 ID。

  2. 指定顶级分类 (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" %}:这行代码会从数据库中查询所有 moduleId1 (文章模型) 且 parentId0 (顶级分类) 的分类数据,并将结果存储在一个名为 categories 的变量中。
  • {% for item in categories %}:这是一个循环结构,会逐一遍历 categories 变量中的每个分类。在每次循环中,当前分类的数据都会被赋值给 item 变量。
  • {{ item.Link }}:显示当前分类的链接地址,点击后会跳转到该分类的列表页。
  • {{ item.Title }}:显示当前分类的名称。
  • {{ item.Description }}:显示当前分类的简介。
  • {{ item.Thumb }}:显示当前分类的缩略图。
  • {% empty %}:如果 categories 列表中没有任何数据,empty 块内的内容(例如“暂无顶级分类信息。”)就会被显示出来。

通过这种方式,您可以在网站的任何位置灵活地展示所需内容模型的顶级分类列表。这种标签化的调用方式,大大简化了模板开发,让您可以更专注于网站设计和内容呈现。

进阶应用与实用技巧

  • 展示多个内容模型的顶级分类: 如果您希望在一个页面上同时展示文章和产品的顶级分类,可以分别使用 moduleId12categoryList 标签,并将其显示在不同的区域。
  • 判断当前分类是否被选中: 在构建导航菜单时,您可能希望突出显示用户当前正在访问的分类。item 变量中有一个 IsCurrent 字段,它是一个布尔值。您可以使用 {% if item.IsCurrent %} 来为当前选中项添加 CSS 类,从而实现高亮效果。
  • 将代码模块化: 为了保持模板文件的整洁和可维护性,建议将这种常用的分类列表代码片段放到一个独立的 partial 文件中,例如 partial/top_categories.html,然后在需要的地方使用 {% include "partial/top_categories.html" %} 进行引用。

通过 AnQiCMS 的 categoryList 标签,显示所有顶级分类的列表变得轻而易举,极大地提升了网站结构的灵活性和内容组织的效率。

常见问题 (FAQ)

  1. 如何获取特定内容模型(如“产品”)的顶级分类? 您只需调整 moduleId 参数的值。例如,要获取产品模型的顶级分类,可以将 moduleId="1" 改为 moduleId="2"(具体 ID 请根据您后台的设置确认)。

  2. 我可以控制顶级分类的显示顺序吗? 是的,您可以在 AnQiCMS 后台的“内容管理”->“文档分类”中编辑每个分类,其中有一个“显示顺序”字段。数字越小,分类在列表中显示的位置越靠前。AnQiCMS 的 categoryList 标签默认会按照这个顺序进行展示。

  3. 如何展示顶级分类下的子分类列表? 要展示子分类,您可以在遍历顶级分类的 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 %}