gpt4 book ai didi

spartacus-storefront - 如何添加我的自定义页面解析器而不是 Spartacus 页面解析器?

转载 作者:行者123 更新时间:2023-12-02 00:50:51 26 4
gpt4 key购买 nike

我正在将我的解析器(从 PageMetaResolver 扩展)添加到我自己的 home.module 中的提供程序中。但是,没有调用我的方法“解决”。你有什么想法吗?

@Injectable({
providedIn: 'root'
})
export class HomePageMetaResolver extends PageMetaResolver implements PageDescriptionResolver {

constructor(
protected routingService: RoutingService,
protected translationService: TranslationService,
protected cms: CmsService
) {
super();
this.pageType = PageType.CONTENT_PAGE;
}

resolve(): Observable<PageMeta> {
console.log('RESOLVE')

return this.cms.getCurrentPage().pipe(
switchMap(page =>
combineLatest([
this.resolveDescription()
])
),
map(([description]) => ({ description }))
);
}

resolveDescription(): Observable<string> {
return new Observable(sub => {
sub.next('test description');
});
}
}

最佳答案

TL; 博士

请不仅注明this.pageType ,还有this.pageTemplate为您 PageMetaResolver .

详细说明

最具体的 Page Meta Resolver 获胜

从您的元解析器的名称猜测,您只想为您的主页提供自定义元。请注意 最具体的元解析器获胜 感谢简单的评分算法,它考虑了 2 个因素:页面类型和页面模板(参见来源 https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/core/src/cms/page/page-meta.resolver.ts#L11)。

当前您的解析器 HomePageMetaResolver具有与通用相同的特异性,因此您的 resolve方法没有被调用。

specificity of all Page Meta Resolvers

您需要通过定义它的属性 this.pageTemplate = '<name-of-page-template-used-only-at-homepage>' 来指定更多的元解析器。 .那么你的 HomePageMetaResolver将获得比默认值更高的分数 ContentPageMetaResolver每当您访问主页时。

自定义评分算法

对于自定义评分算法(例如,可以考虑 pageId),您可以覆盖方法 getScore您的 PageMetaResolver s。您甚至可以扩展方法 PageMetaService.getMetaResolver重新定义选择正确页面元解析器的所有规则。但是对于您的情况,标准解决方案(如上所述)就足够了。

关于spartacus-storefront - 如何添加我的自定义页面解析器而不是 Spartacus 页面解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57774283/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com