AnQiCMS的`categoryList`标签如何展示多层级分类结构并显示分类信息?

📅 👁️ 66

在安企CMS中,网站分类是组织内容的基石,无论是文章、产品还是其他自定义模型,清晰的分类结构都能极大提升用户体验和网站的SEO效果。安企CMS提供了强大的categoryList标签,让我们可以灵活地展示单层或多层级的分类结构,并轻松获取分类的各项详细信息。

掌握categoryList标签的基础用法

要展示分类列表,我们首先需要用到categoryList标签。它的核心作用是从后台获取分类数据,并以列表形式呈现在前端页面。最基本的用法通常会指定要获取哪个内容模型(moduleId)的分类,以及从哪个层级开始(parentId)。

举个例子,如果我们想展示文章模型(假设moduleId为1)的所有顶级分类,我们可以这样编写模板代码:

{% categoryList categories with moduleId="1" parentId="0" %}
    <ul>
        {% for item in categories %}
        <li>
            <a href="{{ item.Link }}">{{item.Title}}</a>
        </li>
        {% endfor %}
    </ul>
{% endcategoryList %}

在这里,categories是我们自定义的变量名,它会承载从后台获取到的分类数据列表。parentId="0"表示我们请求的是没有父级、也就是最高层级的分类。item是循环中的每一个分类对象,通过item.Linkitem.Title,我们可以分别获取分类的链接和名称。

构建多层级分类结构

安企CMS的categoryList标签非常适合构建嵌套的多层级分类菜单。实现这一点,关键在于在循环内部再次调用categoryList标签,并将当前分类的ID作为子分类的parentId。同时,item.HasChildren这个字段能帮助我们判断当前分类是否有子分类,从而有条件地渲染子菜单。

例如,创建一个三层级的导航菜单可能会像这样:

<nav>
    <ul class="main-nav">
        {% categoryList topCategories with moduleId="1" parentId="0" %}
            {% for item in topCategories %}
            <li class="{% if item.HasChildren %}has-dropdown{% endif %}">
                <a href="{{ item.Link }}">{{ item.Title }}</a>
                {% if item.HasChildren %}
                    <ul class="sub-nav">
                        {% categoryList subCategories with parentId=item.Id %} {# 使用当前分类的ID作为父ID #}
                            {% for inner1 in subCategories %}
                            <li class="{% if inner1.HasChildren %}has-dropdown{% endif %}">
                                <a href="{{ inner1.Link }}">{{ inner1.Title }}</a>
                                {% if inner1.HasChildren %}
                                    <ul class="third-nav">
                                        {% categoryList thirdCategories with parentId=inner1.Id %} {# 再次嵌套获取第三级分类 #}
                                            {% for inner2 in thirdCategories %}
                                            <li>
                                                <a href="{{ inner2.Link }}">{{ inner2.Title }}</a>
                                            </li>
                                            {% endfor %}
                                        {% endcategoryList %}
                                    </ul>
                                {% endif %}
                            </li>
                            {% endfor %}
                        {% endcategoryList %}
                    </ul>
                {% endif %}
            </li>
            {% endfor %}
        {% endcategoryList %}
    </ul>
</nav>

这段代码首先获取所有顶级分类,然后在每个顶级分类的循环内部,如果item.HasChildren为真,就会再调用一次categoryList来获取其子分类。这个过程可以根据实际需求进行多层嵌套,完美呈现网站的层级结构。

值得一提的是,item.Spacer这个字段在后台分类列表页显示时,可能会包含用于视觉缩进的前缀,比如|--。在前端模板中,如果你想保留这种视觉层级感,可以使用{{item.Spacer|safe}}将其输出在分类标题之前。

展示分类的详细信息

除了名称和链接,安企CMS的categoryList标签还能让我们获取分类的许多其他实用信息。在for循环中的item对象,包含了丰富的数据字段,可以帮助我们构建更丰富的分类展示。

一些常用的分类信息包括:

  • item.Id: 分类ID,是识别分类的唯一标识。
  • item.Description: 分类的简介或描述文字,常用于页面头部或列表详情。
  • item.Content: 分类的详细内容,如果后台有填写的话,需要使用{{ item.Content|safe }}来确保HTML内容正确渲染。
  • item.Logo: 分类的缩略图大图地址,可以用于Banner或醒目位置。
  • item.Thumb: 分类的缩略图地址,通常用于列表展示。
  • item.ArchiveCount: 该分类下的文档数量,有助于提供数据洞察。
  • item.IsCurrent: 判断当前分类是否是当前页面的分类,可用于高亮显示当前导航项。

比如,我们可能需要在分类列表旁边显示分类的简介和缩略图:

{% categoryList categories with moduleId="1" parentId="0" %}
    <div class="category-grid">
        {% for item in categories %}
        <div class="category-card">
            <a href="{{ item.Link }}">
                {% if item.Thumb %}
                    <img src="{{ item.Thumb }}" alt="{{ item.Title }}" class="category-thumb">
                {% endif %}
                <h3 class="category-title">{{ item.Title }}</h3>
            </a>
            {% if item.Description %}
                <p class="category-desc">{{ item.Description }}</p>
            {% endif %}
            <span class="article-count">文档数量: {{ item.ArchiveCount }}</span>
        </div>
        {% endfor %}
    </div>
{% endcategoryList %}

如果分类有自定义字段,例如后台为分类添加了一个“分类负责人”的字段,其调用字段为manager,那么你同样可以通过{{ item.manager }}来直接获取其值,或者通过循环item.Extra来获取所有自定义字段。

通过灵活运用categoryList标签及其提供的各项字段,我们可以在安企CMS中构建出既美观又实用的多层级分类结构,为网站用户提供直观且高效的导航体验。


常见问题 (FAQ)

1. 如何在分类列表中,判断当前分类是不是正在浏览的页面所属的分类,并进行高亮显示?

categoryList循环中,每个item对象都包含一个IsCurrent布尔值。当item.IsCurrenttrue时,表示该分类就是当前页面所属的分类。你可以利用这个属性来添加CSS类,实现高亮效果。

例如:

{% categoryList categories with moduleId="1" parentId="0" %}
    <ul>
        {% for item in categories %}
        <li class="{% if item.IsCurrent %}active-category{% endif %}">
            <a href="{{ item.Link }}">{{item.Title}}</a>
        </li>
        {% endfor %}
    </ul>
{% endcategoryList %}

**2. 我想展示的分类属于不同的内容模型,例如同时展示文章分类和产品分类,

相关文章

`relatedArchive`标签如何根据文档关联性显示相关文章列表?

在日常的网站运营中,如何让用户在浏览完一篇文章后,能自然而然地发现更多感兴趣的内容,是提升用户体验、延长网站停留时间、甚至优化SEO效果的关键。安企CMS深知这一点,并提供了强大的模板标签功能,其中`relatedArchive`标签正是用于智能展示相关文章列表的利器。 ## `relatedArchive`标签

2025-11-07

如何在AnQiCMS文档详情页显示上一篇和下一篇文档的链接?

在网站内容的海洋里,用户往往希望能够流畅地浏览相关信息,不希望在看完一篇精彩文章后,还需要返回列表重新寻找下一篇。这不仅影响用户体验,对网站的内部链接结构和搜索引擎优化(SEO)也大有裨益。AnQiCMS 充分考虑到了这一点,为内容详情页提供了方便快捷的导航功能,让用户能够轻松地在不同文档之间跳转。 AnQiCMS 的模板系统非常灵活,它借鉴了 Django 模板引擎的语法

2025-11-07

`archiveDetail`标签如何获取并显示单个文档的完整内容和属性?

在使用安企CMS(AnQiCMS)构建网站内容时,展示单个文档的完整信息是核心需求之一。无论是一篇文章的详细内容、一个产品的详细介绍,还是其他任何自定义内容模型的具体条目,都需要一个高效且灵活的方式来提取和呈现这些数据。这正是 `archiveDetail` 标签发挥作用的地方。 ### 理解 `archiveDetail` 标签的核心作用 `archiveDetail`

2025-11-07

如何在AnQiCMS中为文档列表添加分页功能并优化显示效果?

在网站运营中,如何高效地展示大量内容,同时保证用户体验的流畅性,是一个不容忽视的课题。文档列表的分页功能就是解决这一问题的关键。安企CMS(AnQiCMS)作为一个高效、灵活的内容管理系统,提供了直观且强大的模板标签,让您可以轻松地为文档列表添加分页功能,并在此基础上进行显示优化,让您的网站内容更具吸引力。 ### 安企CMS分页功能的核心

2025-11-07

`categoryDetail`标签如何获取并显示特定分类的描述、Logo等详细信息?

在 AnQiCMS 的模板开发中,获取并展示分类的详细信息是构建丰富且用户友好页面的关键一环。`categoryDetail` 标签正是为此而生,它能帮助你轻松地在页面的任何位置调取特定分类的描述、Logo、自定义字段等详细内容。 ### `categoryDetail` 标签的核心功能 `categoryDetail` 标签的主要作用是获取单个分类的详细数据

2025-11-07

`pageList`标签如何显示网站所有单页面的标题和链接?

在安企CMS中,利用 `pageList` 标签展示所有单页面的标题和链接,是网站布局和导航设置中非常常见且实用的需求。无论是用于网站底部导航、侧边栏链接列表,还是构建一个简单的HTML站点地图,`pageList` 标签都能帮助我们高效地实现这些功能。 ### 理解安企CMS中的单页面 首先,我们来简要回顾一下安企CMS中的“单页面”。在安企CMS的后台管理中,有一个专门的“页面资源”模块

2025-11-07

`pageDetail`标签如何显示单个单页面的详细内容,例如“关于我们”页面?

在安企CMS中,单页面(例如“关于我们”、“联系我们”或“服务条款”)是网站不可或缺的一部分,它们通常承载着独立且相对静态的内容。要将这些单页面的详细内容呈现在网站前端,我们会用到一个非常核心且实用的模板标签——`pageDetail`。这个标签能够帮助我们精确地提取和显示指定单页面的各类信息,确保内容展示的灵活性和准确性。 ### `pageDetail`

2025-11-07

AnQiCMS的`tagList`标签如何展示文档关联的所有标签?

## 轻松展示文档关联标签:AnQiCMS 的 `tagList` 标签深度解析 在内容管理中,标签(Tag)扮演着至关重要的角色。它们不仅能帮助我们更好地组织内容,提升网站的内部链接结构,还能在搜索引擎优化(SEO)方面发挥巨大作用,让用户和搜索引擎更容易发现相关信息。AnQiCMS 充分考虑到了这一点,提供了一套灵活且功能强大的标签管理系统。其中,`tagList`

2025-11-07