You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用自定义HTML替换Spartacus导航菜单的OOTB CMS结构

替换Spartacus默认CMS HTML实现自定义导航菜单结构

要替换Spartacus开箱即用(OOTB)的CMS导航菜单HTML结构,改成指定的层级菜单样式,按以下步骤操作:

1. 创建自定义导航组件

用Angular CLI生成自定义组件,替换默认的导航组件:

ng generate component components/navigation/custom-navigation

2. 覆盖Spartacus的CMS组件配置

在项目的配置模块(比如app-config.module.ts)中,配置将默认的NavigationComponent替换为自定义组件:

import { NgModule } from '@angular/core';
import { CmsConfig, ConfigModule } from '@spartacus/core';
import { CustomNavigationComponent } from './components/navigation/custom-navigation.component';

const cmsConfig: CmsConfig = {
  cmsComponents: {
    NavigationComponent: {
      component: CustomNavigationComponent
    }
  }
};

@NgModule({
  imports: [
    ConfigModule.withConfig(cmsConfig)
  ]
})
export class AppConfigModule { }

3. 实现目标HTML结构

在custom-navigation.component.html中写入自定义的菜单结构(可根据实际路由调整routerLink):

<ul>
  <li><a [routerLink]="['/']">HOME</a></li>
  <li>
    <a [routerLink]="['/association']">THE ASSOCIATION</a>
    <ul class="sub-menu">
      <li>
        <a [routerLink]="['/association/who-we-are']">WHO WE ARE</a>
      </li>
    </ul>
  </li>
  <li><a [routerLink]="['/contacts']">CONTACTS</a></li> 
  <li>
    <a [routerLink]="['/products']">PRODUCTS</a>
    <ul class="sub-menu">
      <li>
        <a [routerLink]="['/products/shoes']">SHOES</a>
      </li>
      <li>
        <a [routerLink]="['/products/umbrellas']">UMBRELLAS</a>
      </li>
    </ul>
  </li>
</ul>

如果需要从CMS动态拉取菜单数据而非硬编码,可以注入NavigationService获取菜单节点,再通过循环渲染结构。

4. 添加子菜单样式(可选)

在custom-navigation.component.scss中添加样式控制子菜单显示:

.sub-menu {
  display: none;
  list-style: none;
  padding-left: 1rem;
}

li:hover .sub-menu {
  display: block;
}

内容的提问来源于stack exchange,提问作者avees

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:39:14