如何替换 SiteContextSlot 的内容?
How to replace SiteContextSlot content?
我想将语言和货币选择器从 spartacus 替换为我自己的选择器并添加更多内容。问题是我不能 cxOutletRef SiteContextSlot。我无法覆盖 LanguageComponent 和 CurrencyComponet,如果可以的话,我不想使用 Language - Currency,而是 Currency - Language。所以我真正需要知道的是如何更改 SiteContextSlot。
提前致谢!
您可以使用 Spartacus 的 cmsComponents
配置覆盖此 CMS 组件。请参阅文档 https://sap.github.io/spartacus-docs/customizing-cms-components/#page-title
cms 映射配置中使用的组件名称是 LanguageCurrencyComponent
(或 CMSSiteContextComponent
,具体取决于您的实际 CMS 数据)。
SiteContext
插槽(不是 'SiteContextSlot' 顺便说一句)在 CMS 中定义,默认包含 2 个组件。两者都是 CMSSiteContextComponent
类型。 CMSSiteContextComponent
有一个 属性 ('context') 来定义实际上下文。
上下文由 SiteContextSelectorComponent
获取,后者将逻辑委托给 SiteContextComponentService
。 SiteContextComponentService
使用通用方法在 select 元素中加载上下文列表。
如果要更改 SiteContext
中的顺序或上下文 select,我建议如下:
- 只需更改 CMS 中
SiteContextSlot
中组件的顺序即可更改顺序
- 删除上下文;只需从
SiteContextSlot
中删除一个组件
- 添加自定义上下文(组件)。
添加新上下文有不同的选项:
- 添加 SiteContextSelectorComponent
的新实例。这相当复杂,因为您需要在后端引入一个新的上下文(虽然只是一个枚举)并扩展 SiteContextComponentService
以便可以使用新的上下文。
- 创建您自己的上下文组件以呈现额外的上下文
- 创建自定义组件以呈现所有上下文(您将替换 SiteContextSlot
内的所有组件并添加新组件)。
- 完全忘记 CMS,正如你所建议的那样,一起覆盖插槽。这实际上适用于网点。
您还可以混合搭配以上选项:
- 保留 CMS 中的现有组件(但可能会重新排序)
- 使用带有
OutletPosition
的插座,在那里你会有额外的组件。
下面的代码在代码中向您展示了这一点
<ng-template cxOutletRef="SiteContext" cxOutletPos="after">
more context
</ng-template>
我想将语言和货币选择器从 spartacus 替换为我自己的选择器并添加更多内容。问题是我不能 cxOutletRef SiteContextSlot。我无法覆盖 LanguageComponent 和 CurrencyComponet,如果可以的话,我不想使用 Language - Currency,而是 Currency - Language。所以我真正需要知道的是如何更改 SiteContextSlot。
提前致谢!
您可以使用 Spartacus 的 cmsComponents
配置覆盖此 CMS 组件。请参阅文档 https://sap.github.io/spartacus-docs/customizing-cms-components/#page-title
cms 映射配置中使用的组件名称是 LanguageCurrencyComponent
(或 CMSSiteContextComponent
,具体取决于您的实际 CMS 数据)。
SiteContext
插槽(不是 'SiteContextSlot' 顺便说一句)在 CMS 中定义,默认包含 2 个组件。两者都是 CMSSiteContextComponent
类型。 CMSSiteContextComponent
有一个 属性 ('context') 来定义实际上下文。
上下文由 SiteContextSelectorComponent
获取,后者将逻辑委托给 SiteContextComponentService
。 SiteContextComponentService
使用通用方法在 select 元素中加载上下文列表。
如果要更改 SiteContext
中的顺序或上下文 select,我建议如下:
- 只需更改 CMS 中
SiteContextSlot
中组件的顺序即可更改顺序 - 删除上下文;只需从
SiteContextSlot
中删除一个组件
- 添加自定义上下文(组件)。
添加新上下文有不同的选项:
- 添加 SiteContextSelectorComponent
的新实例。这相当复杂,因为您需要在后端引入一个新的上下文(虽然只是一个枚举)并扩展 SiteContextComponentService
以便可以使用新的上下文。
- 创建您自己的上下文组件以呈现额外的上下文
- 创建自定义组件以呈现所有上下文(您将替换 SiteContextSlot
内的所有组件并添加新组件)。
- 完全忘记 CMS,正如你所建议的那样,一起覆盖插槽。这实际上适用于网点。
您还可以混合搭配以上选项:
- 保留 CMS 中的现有组件(但可能会重新排序)
- 使用带有
OutletPosition
的插座,在那里你会有额外的组件。
下面的代码在代码中向您展示了这一点
<ng-template cxOutletRef="SiteContext" cxOutletPos="after">
more context
</ng-template>