在网站内容日益丰富的今天,一个清晰、高效的导航系统对于提升用户体验和搜索引擎优化(SEO)至关重要。特别是对于拥有大量内容或多种产品分类的网站,多级分类导航能帮助用户迅速找到所需信息,同时向搜索引擎展示网站的结构层次。安企CMS凭借其灵活强大的模板引擎,使得构建这样的导航变得简单而直观。本文将深入探讨如何在安企CMS模板中,巧妙地构建多级分类导航,并智能判断每个分类是否包含子分类,让您的网站导航更加动态和智能化。
理解安企CMS的模板基础
安企CMS的模板系统采用了类似Django模板引擎的语法,这种语法模式对开发者非常友好,易于上手。它允许我们通过特定的标签和变量来动态地展示数据。在构建分类导航时,主要会用到 categoryList 标签,以及 if 和 for 这样的逻辑控制标签。这些标签共同构成了我们实现复杂导航逻辑的基础。
构建多级分类导航的核心:categoryList 标签
categoryList 标签是安企CMS专门为获取分类列表而设计的,它能够根据我们的需求筛选出不同模型、不同层级的分类数据。
- 指定内容模型 (
moduleId):您的网站可能包含文章、产品等多种内容模型,每个模型下的分类是独立的。通过moduleId参数,您可以精确地指定要获取哪个内容模型下的分类。例如,moduleId="1"通常代表文章模型,moduleId="2"可能代表产品模型。 - 指定父级分类 (
parentId):这是实现多级导航的关键。- 当
parentId="0"时,您将获取到指定内容模型下的所有顶级分类。 - 当
parentId设置为某个具体分类的ID时,则会获取该分类下的所有直接子分类。 - 如果您想获取某个分类的兄弟分类(即与它同属一个父级分类的所有子分类),可以在其父级分类ID已知的情况下,将该父级分类ID作为
parentId传入categoryList标签。
- 当
判断分类是否有子分类:item.HasChildren
在循环 categoryList 标签获取到的分类数据时,每个分类(通常在循环中命名为 item)都带有一个非常有用的属性:HasChildren。这是一个布尔值,如果当前分类拥有子分类,HasChildren 的值就为 true;否则,为 false。利用这个属性,我们可以在模板中灵活地控制导航的显示逻辑,例如,只在有子分类的项下方才显示二级菜单的容器,避免了不必要的空菜单。
实际操作:构建多级分类导航
现在,让我们通过一个具体的例子,来展示如何在模板中构建一个两级或更多层级的分类导航。
假设我们希望构建一个显示文章分类的导航菜单,其中包含一级分类及其下的二级分类:
”`twig {# 获取文章模型(假设moduleId为1)下的所有顶级分类 #} {% categoryList categories with moduleId=“1” parentId=“0” %}
<ul>
{% for item in categories %}
<li {% if item.HasChildren %}class="has-submenu"{% endif %}> {# 如果有子分类,添加特定CSS类 #}
<a href="{{ item.Link }}">{{ item.Title }}</a>
{# 判断当前分类是否有子分类,如果有,则渲染子菜单 #}
{% if item.HasChildren %}
<ul class="submenu">
{# 获取当前一级分类的子分类 #}
{% categoryList subCategories with parentId=item.Id %}
{% for subItem in subCategories %}
<li {% if subItem.HasChildren %}class="has-submenu"{% endif %}>
<a href="{{ subItem.Link }}">{{ subItem.Title }}</a>
{# 进一步判断二级分类是否有三级子分类,可以继续嵌套 #}
{% if subItem.HasChildren %}
<ul class="sub-submenu">
{% categoryList thirdCategories with parentId=sub