安企CMS,作为一款高效、可定制的企业级内容管理系统,在内容组织和展示方面提供了极大的灵活性。其中,巧妙运用模板标签是发挥其潜力的关键。今天,我们就来深入探讨如何利用 categoryList 标签,精准地获取指定内容模型下的所有顶级分类,这对于构建清晰的网站导航、内容模块或是产品展示页面都至关重要。

理解安企CMS的内容模型与分类体系

在安企CMS中,内容管理的核心概念之一便是“内容模型”。它允许我们根据业务需求,创建不同类型的内容结构,比如“文章模型”用于博客和新闻,而“产品模型”则可能用于商品展示。每个内容模型都可以拥有自己独立的分类体系,这样才能确保内容归类井然有序,互不干扰。

分类,顾名思义,是组织内容的层级结构。顶级分类是分类体系的起点,它们通常代表着网站的 major sections 或产品的大类。例如,在“产品模型”下,顶级分类可能是“手机”、“电脑”、“家电”;而在“文章模型”下,则可能是“行业新闻”、“技术分享”、“公司动态”。精确获取这些顶级分类,是构建网站主导航、首页内容区块的常用需求。

categoryList 标签:获取分类的利器

安企CMS的模板引擎提供了丰富的标签,其中 categoryList 标签就是专门用来获取分类列表的。它的强大之处在于,可以通过一系列参数,精细控制所要获取的分类范围。

要获取指定内容模型下的所有顶级分类,我们需要重点关注 categoryList 标签的两个核心参数:moduleIdparentId

1. moduleId:定位目标内容模型

moduleId 参数告诉 categoryList 标签,你希望从哪个内容模型中获取分类。每个在安企CMS后台创建的内容模型都有一个唯一的数字ID。例如,通常情况下,“文章模型”的 moduleId 可能是 1,“产品模型”的 moduleId 可能是 2(具体ID请以您的后台设置为准)。

如果您不指定 moduleId,标签可能会尝试从当前页面上下文或默认模型中获取分类,这往往不是我们想要的结果。通过明确设置 moduleId,我们就能精准地将查询范围限定在特定的内容模型内。

2. parentId="0":筛选出顶级分类

parentId 参数用于指定父级分类的ID。在安企CMS的分类体系中,顶级分类的 parentId 值固定为 0。这意味着,任何 parentId0 的分类,都是没有上级分类的,它们是分类层级的最顶端。

因此,当我们将 parentId 设置为 "0" 时,categoryList 标签便只会返回指定模型下的所有一级分类,有效地帮我们过滤掉了所有子分类。

categoryList 标签的基本语法结构

categoryList 标签的通用结构如下:

{% categoryList 变量名称 with 参数 %}
    {# 循环输出分类列表的代码 #}
{% endcategoryList %}

在这里:

  • 变量名称:你可以自定义一个变量名(比如 categories),用来存储获取到的分类数据,后续通过 for 循环遍历这个变量。
  • with 参数:在这里设置 moduleIdparentId 等参数。
  • {% endcategoryList %}:标签的结束标记,不可省略。

实际操作:获取指定模型下的所有顶级分类

假设我们希望获取“产品模型”下的所有顶级分类,并在网站首页的某个区域展示它们。首先,我们需要知道“产品模型”的 moduleId。在安企CMS后台,进入“内容管理” -> “内容模型”,通常可以看到模型列表及其对应的ID。假设“产品模型”的ID是 2

那么,代码就可以这样编写:

{# 假设产品模型的moduleId是2 #}
<nav class="product-categories-nav">
    <h3>产品分类</h3>
    <ul>
        {% categoryList productTopCategories with moduleId="2" parentId="0" %}
            {% for item in productTopCategories %}
                <li>
                    <a href="{{ item.Link }}" title="{{ item.Title }}">
                        {{ item.Title }}
                    </a>
                    {# 如果需要显示该顶级分类下的子分类,可以根据item.HasChildren判断后,在此处再次嵌套categoryList标签 #}
                    {% if item.HasChildren %}
                        <ul class="sub-categories">
                            {# 嵌套获取子分类,例如:{% categoryList subCats with parentId=item.Id %}{# ... #}{% endcategoryList %} #}
                        </ul>
                    {% endif %}
                </li>
            {% endfor %}
            {% empty %}
                <li>暂无顶级产品分类。</li>
        {% endcategoryList %}
    </ul>
</nav>

在这段代码中:

  1. {% categoryList productTopCategories with moduleId="2" parentId="0" %}:我们指定 moduleId="2" 来锁定产品模型,并通过 parentId="0" 确保只获取顶级分类。获取到的分类列表将存储在 productTopCategories 变量中。
  2. {% for item in productTopCategories %}:我们遍历 productTopCategories 列表,item 变量在每次循环中代表一个独立的分类对象。
  3. {{ item.Link }}{{ item.Title }}:这是分类对象 item 中常用的字段,分别用于输出分类的链接地址和标题。此外,item 还包含 Id(分类ID)、Description(分类描述)、HasChildren(是否包含子分类)等丰富信息,您可以根据需求灵活调用。
  4. {% empty %}:这是一个非常实用的 for 循环辅助标签。当 productTopCategories 列表为空时,它会输出 {% empty %}{% endfor %} 之间的内容,避免页面出现空白或错误。
  5. {% if item.HasChildren %}:这里通过判断 item.HasChildren 字段,可以得知当前顶级分类是否包含下级子分类。如果您需要在顶级分类下展示其子分类,可以在这个条件块内继续使用 categoryList 标签,并将 parentId 设置为 item.Id,从而实现多级分类的嵌套展示。

内容运营的启示

掌握如何获取指定模型下的顶级分类,对于网站的内容运营有着深远的意义:

  • 构建清晰的导航结构:网站的主导航通常由顶级分类构成,让用户一目了然地找到所需内容。
  • 优化首页内容布局:在首页展示不同内容模型的顶级分类,可以引导用户快速进入感兴趣的版块,提高页面停留时间。
  • 提升SEO友好度:清晰的分类结构有助于搜索引擎更好地理解网站内容层级,提升收录效率和关键词排名。
  • 灵活的模块化展示:可以为不同的模型配置不同的顶部分类展示,让网站内容布局更具多样性和专业性。

总结

安企CMS的 categoryList 标签结合 moduleIdparentId="0" 参数,为我们获取指定内容模型下的所有顶级分类提供了简洁而强大的方式。这不仅是技术实现,更是内容组织与用户体验优化的一项基础能力。通过灵活运用,您将能够构建出更具逻辑性、更易于用户探索的网站。


常见问题 (FAQ)

Q1: 我设置了 moduleIdparentId="0",但为什么没有显示任何分类? A1: 这可能有几个原因。首先,请检查您指定的 moduleId 是否