spartacus-storefront - Spartacus 多站点特定配置
问题描述
我们想在 Spartacus 的前端存储一些特定于站点的配置。例如:(多站点设置的)每个站点都有不同的 Google API 密钥。
现在,我已经建立了一个 CONFIG_INITIALIZER 工厂,如下所示。但是对于虚假的范围界定,这似乎不是正确的方法。
import { Inject, Injectable } from '@angular/core';
import { ConfigInitializer, ConfigInitializerService, deepMerge } from '@spartacus/core';
import { StoreFinderConfig } from '@spartacus/storefinder/core';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { MultiSiteConfigChunk } from './multisiteconfig-tokens';
@Injectable({ providedIn: 'root' })
export class MultisiteConfigInitializer implements ConfigInitializer {
// Fake scoping :(
readonly scopes = ['all'];
readonly configFactory = () => this.resolveConfig().toPromise();
constructor(
protected configInit: ConfigInitializerService, @Inject(MultiSiteConfigChunk) private multiSiteConfig: Array<any>) {
}
protected resolveConfig(): Observable<StoreFinderConfig> {
return this.configInit.getStable('context.baseSite').pipe(
map((config) => {
const mergedConfig = deepMerge(...this.multiSiteConfig);
return mergedConfig[config.context.baseSite];
})
);
}
}
有什么推荐的方法可以做到这一点?
解决方案
您可以先查看此文档:https ://sap.github.io/spartacus-docs/automatic-context-configuration/#adding-a-custom-context
如果你使用自动上下文配置,你也可以试试这个:
- 扩展
SiteContextConfigInitializer
(在子类中注入您的 multiSiteConfig);替换SiteContextConfigInitializer
在提供者中使用孩子。 - 子类中的替换
getConfig
函数以将 Google API 密钥添加到site-context
.
推荐阅读
- windows-installer - InstallShield:回滚期间未调用自定义操作
- spring - 如何同时运行 Spring Boot 测试?
- gnuplot - 获取使用 gnu plot contour 函数自动生成的等高线级别
- c++ - 使用迭代器时在 STL 中删除和添加元素
- vue.js - VueJS - 使用子组件时如何正确使用v-model
- clang-format - 我可以在 ubuntu18.04 上安装 clang-format-10
- python - 如何获得最大气泡python plotly open street map的半径?
- sql - 存储过程可以查吗?
- python-3.x - 如何根据行数生成具有常量值的新列
- java - 清除已在 Java 程序中使用的 .txt 文件的内容