延迟加载模块接收页面模板

时间:2020-01-29 16:13:57

标签: spartacus-storefront

与@ spartacus-storefront相关

如何根据GET '/pages'请求中收到的“模板”来延迟加载模块?

示例:首页

  • GET (anonymous user) '/pages' -> {... template: LandingPage1Template } ->我想用我的自定义组件替换加载LandingPage1.module
  • GET (connected user) '/pages' -> {... template: LandingPage2Template } ->我想用另一个自定义布局/插槽/组件加载另一个模块

我希望有一种方法可以在模板和必须加载的模块之间建立映射。

1 个答案:

答案 0 :(得分:0)

我真的不确定我们是否可以轻松地使用Spartacus核心机制来实现这种逻辑,但是我认为,在SAP Commerce Cloud方面进行处理将是最好的方法。

例如,您可以为主页保留两个单独的模板LandingPage1TemplateLandingPage2Template,您的SAP Commerce Cloud系统可以验证用户的状态,并向Spartacus应用程序发送不同的页面结构,其中包含要显示的插槽和组件

在Spartacus Angular应用程序一侧,您应该添加单独模板的配置,例如:

export const layoutSlotsConfig: LayoutConfig = {
  layoutSlots: {
    header: {
      xs: {
        slots: ['Header']
      },
      sm: {
        slots: ['Header']
      },
      md: {
        slots: ['Header']
      },
      lg: {
        slots: ['Header']
      }
    },
    LandingPage1Template: {
      slots: [
        'Section1C',
        'Section1A'
      ]
    },
    LandingPage2Template: {
      slots: [
        'Section2C',
        'Section2A'
      ]
    },
    footer: {
      slots: ['Footer']
    }
  }
};

然后,您可以通过Spartacus核心机制为上述模板简单地实现单独的UI样式,插槽和组件,换句话说,您可以根据用户的状态为主页实现单独的UI和逻辑,而您不需要在前端应用程序端使用模块进行操作。

同样的方法也可以完美地用于其他网站页面。

相关问题