由于 Spartacus 用于 B2C 流程,因此没有任何选项可以从店面更改 BaseStore。我有一个针对不同国家/地区的下拉菜单,现在想从中更改 BaseSite。
问问题
531 次
2 回答
2
所以最后我让它工作了。如果 baseSite 从下拉列表更改并且用户首先从会话中返回读取它,我会将 baseSite 存储到会话。在这里你必须做些什么才能让它工作:
覆盖
BaseSite
服务并更改初始化方法,类似于 的初始化方法LanguageService
。(检查 baseStore 是否存储在 session 中)收听 SET_ACTIVE_BASE_SITE 操作并将有效负载设置为会话。(再次类似于中的 activeLanguage 效果
LanguagesEffects
)现在在 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 回答