如何根据内容模型或父级关系显示分类列表?

📅 👁️ 59

安企CMS作为一款高效的企业级内容管理系统,在内容组织和展示上提供了极大的灵活性。对于许多网站来说,如何根据不同的内容模型或者分类的层级关系来展示分类列表,是一个非常普遍且重要的需求。这不仅关乎网站内容的组织结构,也直接影响到用户体验和搜索引擎优化(SEO)效果。

在安企CMS中,实现这样的展示并不复杂。系统内置的模板标签为我们提供了强大的功能,让我们能够得心应手地控制分类列表的输出。

理解安企CMS的分类体系

在深入探讨如何展示分类列表之前,我们首先需要理解安企CMS是如何构建其分类体系的。系统引入了“内容模型”的概念,例如默认的文章模型和产品模型。每个分类都必须属于一个特定的内容模型。这意味着,你可以为文章定义一套分类,再为产品定义另一套完全独立的分类。这种设计极大地提升了内容管理的灵活性,让你的网站可以承载多种类型的内容。

同时,安企CMS的分类也支持多级层级关系,即所谓的“父子关系”。你可以创建顶级分类,并在这些顶级分类下进一步创建子分类,形成清晰的导航路径。

核心工具:categoryList 模板标签

要根据内容模型或父级关系显示分类列表,我们主要会用到安企CMS的 categoryList 模板标签。这个标签允许我们根据多种条件筛选和展示分类数据,并且提供了丰富的参数来精细控制输出结果。

它的基本使用方式是这样的:{% categoryList categories with moduleId="1" parentId="0" %} ... {% endcategoryList %}

在这里,categories 是我们为获取到的分类列表自定义的变量名,你也可以根据需要替换成其他名称。moduleIdparentId 则是这个标签最重要的两个参数。

  1. 根据内容模型筛选 (moduleId) moduleId 参数用于指定你想要获取哪个内容模型下的分类。安企CMS通常会为“文章”模型分配ID 1,为“产品”模型分配ID 2。如果你自定义了其他内容模型,它们也会有对应的ID。通过设置 moduleId="1",你就能只显示文章相关的分类;设置为 moduleId="2",则显示产品相关的分类。

  2. 根据父级关系筛选 (parentId) parentId 参数则用来控制分类的层级显示。

    • 当你设置 parentId="0" 时,categoryList 将会显示指定内容模型下的所有顶级分类。这是构建主导航或一级分类菜单的常用方法。
    • 如果你想显示某个特定父级分类下的所有子分类,只需将 parentId 的值设置为该父级分类的ID即可。例如,parentId="10" 会显示ID为10的分类下的所有子分类。
    • 另外,如果在一个循环中,你想获取当前分类的下级分类,通常我们会将 parentId 的值设置为循环中当前分类的 item.Id

实战演示:灵活构建分类列表

了解了基础知识后,我们来看几个常见的应用场景。

场景一:显示所有顶级分类(例如,网站主导航)

假设我们想在网站的头部导航中显示所有文章模型的顶级分类。

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

这段代码会遍历文章模型下所有 parentId0 的分类,并为每个分类生成一个链接和标题。

场景二:显示特定父级分类下的子分类(例如,侧边栏导航)

如果你的网站有一个分类ID为 5 的“解决方案”分类,并且你想在侧边栏显示它下面的所有子分类。

<div class="sidebar-menu">
    <h3>解决方案</h3>
    <ul>
        {% categoryList subCategories with parentId="5" %}
        {% for item in subCategories %}
        <li>
            <a href="{{ item.Link }}">{{ item.Title }}</a>
        </li>
        {% endfor %}
        {% endcategoryList %}
    </ul>
</div>

这里我们为子分类列表使用了 subCategories 这个变量名,并指定了父级分类ID为 5

场景三:嵌套显示多级分类(例如,多级下拉菜单)

在很多复杂的导航或产品分类展示中,我们需要显示多级嵌套的分类列表。安企CMS允许你在 for 循环内部嵌套 categoryList 标签,并结合 item.HasChildren 属性来判断当前分类是否有子分类。

<ul class="main-nav">
    {% categoryList categories with moduleId="2" parentId="0" %} {# 获取产品模型的顶级分类 #}
    {% for item in categories %}
    <li>
        <a href="{{ item.Link }}">{{ item.Title }}</a>
        {% if item.HasChildren %} {# 判断当前分类是否有子分类 #}
        <ul class="sub-nav">
            {% categoryList subCategories with parentId=item.Id %} {# 获取当前分类的子分类 #}
            {% for inner in subCategories %}
            <li>
                <a href="{{ inner.Link }}">{{ inner.Title }}</a>
                {% if inner.HasChildren %} {# 如果子分类也有下级,可以继续嵌套 #}
                <ul class="sub-sub-nav">
                    {% categoryList subCategories2 with parentId=inner.Id %}
                    {% for inner2 in subCategories2 %}
                    <li><a href="{{ inner2.Link }}">{{ inner2.Title }}</a></li>
                    {% endfor %}
                    {% endcategoryList %}
                </ul>
                {% endif %}
            </li>
            {% endfor %}
            {% endcategoryList %}
        </ul>
        {% endif %}
    </li>
    {% endfor %}
    {% endcategoryList %}
</ul>

这段代码首先获取产品模型下的顶级分类,然后在每个顶级分类的循环中,检查它是否有子分类。如果有,就再次使用 categoryList 标签,并将 parentId 设置为当前父级分类的ID(item.Id),以此类推,实现多级嵌套。

场景四:在分类列表下显示该分类的文档摘要

有时候,我们不仅要显示分类,还希望在每个分类旁边或下方展示其最新的几篇文档,例如在首页的某个模块。这时,我们可以在 categoryList 循环中嵌套 archiveList 标签。

<div>
    {% categoryList categories with moduleId="1" parentId="0" %}
    {% for item in categories %}
    <div class="category-block">
        <h3><a href="{{ item.Link }}">{{ item.Title }}</a></h3>
        <ul class="article-list">
            {% archiveList archives with type="list" categoryId=item.Id limit="5" %} {# 获取当前分类的最新5篇文档 #}
            {% for archive in archives %}
            <li>
                <a href="{{ archive.Link }}">{{ archive.Title }}</a>
                <span>({{ stampToDate(archive.CreatedTime, "2006-01-02") }})</span>
            </li>
            {% empty %}
            <li>该分类暂无文档</li>
            {% endfor %}
            {% endarchiveList %}
        </ul>
        <a href="{{ item.Link }}" class="more">查看更多</a>
    </div>
    {% endfor %}
</div>

通过 categoryId=item.IdarchiveList 标签能够准确地获取到当前循环分类下的文档。limit="5" 则限制了显示的文档数量。

小结

通过 categoryList 标签配合 moduleIdparentId 参数,我们可以在安企CMS中灵活地构建各种分类列表。无论是简单的顶级分类,还是复杂的多级嵌套导航,甚至是分类与文档混合展示,都能够轻松实现。掌握这些标签的使用,将让你的网站内容组织结构更加清晰,用户更容易找到所需信息,从而提升整体的网站运营效果。


常见问题 (FAQ)

1. 如何在分类列表中判断并高亮显示当前访问页面所属的分类?

你可以在 categoryList 循环中的 item 对象上使用 item.IsCurrent 属性进行判断。例如,{% if item.IsCurrent %}active{% endif %} 可以用来为当前分类的

相关文章

如何在内容页面正确显示面包屑导航路径?

面包屑导航(Breadcrumb Navigation)是一种在网站上非常常见且实用的导航方式,它能够清晰地显示用户在网站层级结构中的当前位置,就像面包屑撒落在森林中指引归途一样。对于用户而言,面包屑导航不仅能帮助他们快速了解当前页面在整个网站中的层级关系,还能方便他们回溯到上一级或更高级别的页面,极大提升了网站的用户体验。同时,对于搜索引擎优化(SEO)来说

2025-11-08

如何在网站中构建和显示多级导航菜单?

网站导航菜单是用户浏览网站内容的指路明灯,一个精心设计的多级导航系统能够显著提升用户体验,帮助访客快速定位所需信息。无论是企业官网、产品展示页还是内容门户,一套清晰、直观且易于操作的导航都是网站成功的关键要素。安企CMS作为一款功能全面且灵活的内容管理系统,提供了直观的后台设置和强大的模板标签,让您能够轻松构建和管理满足各种需求的多级导航菜单。本文将带您了解如何在安企CMS中

2025-11-08

如何动态设置页面的TDK信息以优化SEO展示?

在今天的数字时代,搜索引擎优化(SEO)对于任何网站的成功都至关重要,而页面的TDK信息——也就是页面的Title(标题)、Description(描述)和Keywords(关键词)——是搜索引擎了解页面内容、并决定其排名的关键因素。如果这些信息设置得当,不仅能提升网站在搜索结果中的可见度,还能吸引用户点击,带来高质量的流量。 手动为每一个页面设置TDK不仅费时费力,也容易遗漏。幸运的是

2025-11-08

如何在前端页面显示企业联系方式,包括自定义字段?

在网站运营中,清晰、便捷地展示企业的联系方式是至关重要的一环。它不仅能增强访客对网站的信任度,方便潜在客户进行咨询,更是促进业务转化的基石。安企CMS(AnQiCMS)深知这一点,提供了强大而灵活的功能,让您能够轻松管理并在网站前端展示包括自定义字段在内的各类企业联系信息。 ### 一、后台配置:建立您的企业“联络簿” 在安企CMS中

2025-11-08

如何获取并显示特定分类的详细信息(如描述、Banner图)?

在安企CMS中,灵活地获取并展示分类的详细信息,例如分类的描述、Banner图或缩略图,对于构建内容丰富、视觉吸引力强的网站至关重要。无论是需要在分类列表页展示简介,还是在特定页面引用某个分类的宣传图,安企CMS都提供了直观且强大的模板标签来帮助您实现这些需求。 要获取分类的详细信息,我们主要依赖于 `categoryDetail` 这个模板标签。这个标签专门设计用于提取单个分类的各项数据

2025-11-08

如何在网站上展示所有或部分单页面列表?

在网站运营中,我们经常需要展示一些独立的、内容相对固定不变的页面,例如“关于我们”、“联系方式”或者某些政策说明等。在安企CMS中,这些被称为“单页面”。有效管理和展示这些单页面,不仅能让网站结构更清晰,也能提升用户体验。 接下来,我们将一起探讨如何在网站上灵活地展示所有或部分单页面列表。 ### **一、理解单页面的创建与管理(后台操作)** 在开始前端展示之前

2025-11-08

如何获取并显示特定单页面的全部内容及关联图片?

在安企CMS中,单页面是网站内容构成的重要部分,比如“关于我们”、“联系方式”等。有效地获取并展示这些单页面的全部内容以及关联图片,对于网站的信息传达和视觉表现至关重要。安企CMS提供了直观的后台管理和灵活的模板标签,让这一过程变得非常便捷。 ### 在后台轻松设置单页面内容和图片 首先,我们需要在安企CMS的后台管理系统中创建和编辑单页面内容。这通常在“页面资源”下的“页面管理”模块进行

2025-11-08

如何根据不同条件(如分类、推荐属性)显示文档列表?

在安企CMS中,灵活地展示网站内容是提升用户体验和满足运营需求的关键。无论是根据文章所属的分类,还是内容的推荐属性,系统都提供了强大且易于使用的模板标签,让您能够轻松地定制文档列表的显示方式。 ### 核心利器:`archiveList` 文档列表标签 在安企CMS中,用来控制文档列表展示的核心工具是`archiveList`标签。它允许您根据多种条件来筛选、排序和限制显示的文档数量

2025-11-08