3

由于 Spartacus 用于 B2C 流程,因此没有任何选项可以从店面更改 BaseStore。我有一个针对不同国家/地区的下拉菜单,现在想从中更改 BaseSite。

4

2 回答 2

2

所以最后我让它工作了。如果 baseSite 从下拉列表更改并且用户首先从会话中返回读取它,我会将 baseSite 存储到会话。在这里你必须做些什么才能让它工作:

  1. 覆盖BaseSite服务并更改初始化方法,类似于 的初始化方法LanguageService。(检查 baseStore 是否存储在 session 中)

  2. 收听 SET_ACTIVE_BASE_SITE 操作并将有效负载设置为会话。(再次类似于中的 activeLanguage 效果LanguagesEffects

  3. 现在在 B2cStorefrontModule 配置中将您的其他站点添加为

 B2cStorefrontModule.withConfig({
     context: {
       baseSite: ['electronics','mystore2','mystore-uk', 'mystore-canada'],
       language: ['en'],
       currency: ['USD']
     }

所以主要的解决方案是,您听基本存储更改操作并将值存储到会话,并在页面加载时从会话中读取基本存储

于 2019-09-06T13:42:06.207 回答
1

我想你正在寻找这个。查看从库构建斯巴达克斯店面的完整代码

B2cStorefrontModule.withConfig({
    backend: {
      occ: {
        baseUrl: 'https://localhost:9002',
        prefix: '/rest/v2/',
        legacy: false
      }
    },
    authentication: {
      client_id: 'mobile_android',
      client_secret: 'secret'
    },
    context: {
      baseSite: ['electronics']
    },
    i18n: {
      resources: translations,
      chunks: translationChunksConfig,
      fallbackLang: 'en'
    }
  }),

于 2019-09-13T02:37:11.503 回答