在安企CMS中管理和展示分类列表是网站内容组织的核心。无论是为了优化用户导航体验,还是为了提升搜索引擎的抓取效率,清晰地展示分类结构都至关重要。安企CMS提供了简洁而强大的模板标签,让您能够轻松在网站的首页、分类页或任何需要的地方,灵活地展示您的内容分类。
理解核心:categoryList 标签
安企CMS 模板系统中,用于获取分类列表的主要标签是 categoryList。这个标签能够帮助您按需提取网站的分类数据,并将其呈现在页面上。它的使用方式非常直观,通常以 {% categoryList 变量名称 with 参数 %} 开始,并以 {% endcategoryList %} 结束,中间则通过循环来遍历分类数据。
在使用 categoryList 标签时,有几个关键参数能帮助您精确控制要显示哪些分类:
moduleId: 这是最重要的参数之一,用于指定您想要获取哪个内容模型(如文章模型、产品模型等)下的分类。例如,moduleId="1"可能代表文章模型,而moduleId="2"可能代表产品模型。在后台创建分类时,每个分类都会归属于一个特定的内容模型,所以在这里指定模型ID是确保获取正确分类的基础。parentId: 这个参数用于控制分类的层级关系。- 当设置为
parentId="0"时,您将获取到顶级分类。这在网站首页展示主要内容版块时非常有用。 - 当设置为
parentId=item.Id时(在循环内部),您可以获取当前分类下的子分类。这对于构建多级导航菜单或在父分类页显示其下属分类非常方便。
- 当设置为
limit: 用于限制显示的分类数量,例如limit="10"会只显示前10个分类。all=true: 如果您想获取指定模型下的所有分类,无论层级,可以使用此参数。
在网站首页展示顶级分类列表
网站首页通常需要展示网站的主要内容分类,引导用户进入不同的内容区域。这通常是网站导航或内容区块的一部分。
以下是一个在首页展示顶级分类列表的示例:
<nav class="main-nav">
<ul>
{% categoryList topCategories with moduleId="1" parentId="0" %}
{% for item in topCategories %}
<li class="nav-item {% if forloop.Counter == 1 %}first-item{% endif %}">
<a href="{{ item.Link }}" title="{{ item.Title }}">
{{ item.Title }}
</a>
</li>
{% endfor %}
{% endcategoryList %}
</ul>
</nav>
在这个例子中:
- 我们定义了一个变量
topCategories来存储获取到的分类数据。 moduleId="1"假设是文章模型,确保我们获取的是文章分类。parentId="0"明确指示我们只获取最顶级的分类。for循环遍历topCategories中的每个item,item.Link提供分类的链接地址,item.Title提供分类的名称。forloop.Counter可以用来给第一个分类添加特殊的样式,例如first-item。
在分类页展示子分类列表或同级分类
当用户进入一个特定的分类页面时,您可能希望展示该分类的子分类,以便用户进一步细化浏览范围;或者显示与当前分类同级的其他分类,方便用户切换。
展示子分类列表:
假设您正在访问一个父分类页面,并希望在其下方显示其所有子分类。
{# 假设当前页面是一个分类页面,可以直接获取到当前分类的ID #}
<div class="sub-categories">
<h3>探索更多分类</h3>
<ul>
{% categoryList subCategories with parentId=category.Id %} {# category.Id 动态获取当前分类的ID #}
{% for item in subCategories %}
<li>
<a href="{{ item.Link }}" title="{{ item.Title }}">
{{ item.Title }}
{% if item.HasChildren %} ({{ item.ArchiveCount }}) {% endif %} {# 如果有子分类,显示其下文档数量 #}
</a>
</li>
{% empty %}
<li>当前分类下没有子分类。</li>
{% endfor %}
{% endcategoryList %}
</ul>
</div>
这里:
parentId=category.Id会动态地获取当前访问分类的ID,并以此为父级来获取其子分类。item.HasChildren是一个布尔值,可以用来判断当前分类是否有下级分类,从而进行一些条件展示或交互设计。item.ArchiveCount会显示该分类下直接包含的文档数量,帮助用户了解分类内容量。
结合文档列表展示分类:
一个更常见的需求是在首页或某个特定页面,遍历主要分类,并在每个分类下显示几篇最新的文章或产品。
<section class="featured-content">
{% categoryList mainSections with moduleId="1" parentId="0" limit="4" %} {# 获取前4个顶级文章分类 #}
{% for category in mainSections %}
<article class="content-block">
<h3><a href="{{ category.Link }}">{{ category.Title }}</a></h3>
<ul class="article-list">
{% archiveList articlesInCategory with categoryId=category.Id type="list" limit="5" %} {# 获取当前分类下最新的5篇文章 #}
{% for article in articlesInCategory %}
<li>
<a href="{{ article.Link }}" title="{{ article.Title }}">
<img src="{{ article.Thumb }}" alt="{{ article.Title }}" />
<h4>{{ article.Title }}</h4>
<p>{{ article.Description|truncatechars:80 }}</p>
</a>
</li>
{% empty %}
<li>该分类下暂无文章。</li>
{% endfor %}
{% endarchiveList %}
</ul>
<div class="view-more">
<a href="{{ category.Link }}">查看更多 »</a>
</div>
</article>
{% endfor %}
{% endcategoryList %}
</section>
此示例展示了如何将 categoryList 与 archiveList 标签结合使用:
- 首先,使用
categoryList获取顶级分类(mainSections)。 - 在
mainSections的循环内部,再次使用archiveList标签,通过categoryId=category.Id参数,将当前分类的ID传递给archiveList,从而获取该分类下的文档。 type="list"和limit="5"控制显示最新5篇文章。article.Thumb显示文章缩略图,article.Description|truncatechars:80则对文章简介进行截断显示,保持页面整洁。
灵活的模板定制
安企CMS支持模板的自定义命名,这意味着您可以为特定的分类设计专属的模板。在后台的“文档分类”设置中,您可以为某个分类指定一个“分类模板”,例如 download.html。当用户访问该分类时,系统会自动应用您指定的模板。
此外,如果您在模板设计时希望对分类列表进行更精细的控制,可以利用 item.Logo 或 item.Thumb 来显示分类的自定义图片,或者使用 item.Description 来展示分类的简介。
通过这些灵活的标签和参数,您可以在安企CMS中构建出符合各种业务需求和设计风格的分类展示效果,极大地提升网站的内容可发现性和用户体验。
常见问题 (FAQ)
- 问:如何让分类列表只显示特定内容模型(如文章或产品)下的分类,而不显示其他模型的分类?
- 答: 您可以使用
categoryList标签的moduleId参数来指定要获取的分类所属的内容模型ID。例如,`{% categoryList categories with moduleId=“1
- 答: 您可以使用