如何替换SiteContextSlot内容?

问题描述

我想将斯巴达克斯的语言和货币选择器替换为我自己的语言和货币选择器,并添加更多内容。问题是我无法cxOutletRef SiteContextSlot。我无法覆盖LanguageComponent和CurrencyComponet,如果可以的话,我也不想具有语言-货币,但不希望具有货币-语言。因此,我真正需要知道的是如何更改SiteContextSlot。

谢谢!

解决方法

SiteContext插槽(不是'SiteContextSlot'btw)是在CMS中定义的,默认情况下它包含2个组件。两者均为CMSSiteContextComponent类型。 CMSSiteContextComponent具有用于定义实际上下文的属性(“上下文”)。

SiteContextSelectorComponent将上下文委托给SiteContextComponentServiceSiteContextComponentService使用通用方法在select元素中加载上下文列表。

如果要更改SiteContext中的顺序或上下文选择器,我建议以下内容:

  • 只需更改CMS中SiteContextSlot内组件的顺序即可更改顺序
  • 删除上下文;只需从SiteContextSlot
  • 中删除组件
  • 添加自定义上下文(组件)。

有多种添加新上下文的选项: -添加SiteContextSelectorComponent的新实例。这是相当复杂的,因为您需要在后端(尽管只是一个枚举)引入一个新的上下文并扩展SiteContextComponentService以便可以使用新的上下文。 -创建自己的上下文组件以呈现其他上下文 -创建自定义组件以呈现所有上下文(您将替换SiteContextSlot中的所有组件并添加新组件)。 -完全不使用CMS,并且如您所建议,请一起覆盖该插槽。实际上,这可以在网点使用。

您还可以混合使用上述选项:

  • 保留CMS中的现有组件(但可能会对其重新排序)
  • OutletPosition上使用插座,以备不时之需。

下面的代码通过代码向您显示

<ng-template cxOutletRef="SiteContext" cxOutletPos="after">
  more context
</ng-template>
,

您可以使用Spartacus的cmsComponents配置覆盖此CMS组件。参见文档https://sap.github.io/spartacus-docs/customizing-cms-components/#page-title

在cms映射配置中使用的组件名称为LanguageCurrencyComponent(或CMSSiteContextComponent,具体取决于您的实际CMS数据)。