SAP Spartacus 自定义 PageResolver 的用法
前置閱讀:
Angular路由里的resolve接口的使用方法
有網友遇到一個問題:
How to add my custom page resolver instead of Spartacus page resolver?
I’m adding my resolver (which extended from PageMetaResolver) into providers in my own home.module. However, my method ‘resolve’ is not called. Have you got any ideas?
@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');});} }分析
The most specific Page Meta Resolver wins
Guessing from the name of your meta resolver, you want to provide custom meta only for your Home page. Please note that the most specific meta resolver wins thanks to the simple scoring algorithm, which takes into consideration 2 factors: page type and page template (see source https://github.com/SAP/cloud-commerce-spartacus-storefront/blob/develop/projects/core/src/cms/page/page-meta.resolver.ts#L11).
Currently your resolver HomePageMetaResolver has the same specificity as the generic one so your resolve method is not called.
specificity of all Page Meta Resolvers
You need to specify more your meta resolver by defining its property this.pageTemplate = ‘’. Then your HomePageMetaResolver will get higher score than a default ContentPageMetaResolver whenever you visit a homepage.
Custom scoring algorithms
For custom scoring algorithms (which could take pageId into account, for instance), you can overwrite the method getScore of your PageMetaResolvers. You can even extend the method PageMetaService.getMetaResolver to redefine all rules of chosing the right page meta resolver. But for your case the standard solution (described above) should suffice.
總結
以上是生活随笔為你收集整理的SAP Spartacus 自定义 PageResolver 的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个简单的workaround - 如何
- 下一篇: 如何在 SAP Spartacus 里添