对于不需要来自 CMS 的任何数据(例如,登录)的 Angular 或 web 组件,您可以使用 CMSFlexComponent 类型的 CMS 组件作为占位符。 这个 CMS 组件包含特殊的 flexType 属性。 Spartacus 在其 CMS 映射中使用 flexType 属性而不是原始组件类型。
同理,CMS映射中使用的是JspIncludeComponent的uid属性,而不是原来的组件类型。
注意:建议使用 CMSFlexComponent 而不是 JspIncludeComponent,因为 JspIncludeComponent 中的 uid 属性必须是唯一的,这意味着不能有同一个 JspIncludeComponent 的两个实例。
CMSFlexComponent 字符串定义成常量 CMS_FLEX_COMPONENT_TYPE 的值:
在 occ-cms-page-normalizaer.ts 文件的 normalizePageComponentData 方法里设置断点:
准备被 normalizer 处理的源数据结构:
每个 page 有多个 contentSlot,每个 slot 包含了多个 Component:
target 结构:source 结构中 slot 的 position 值,作为 target 结构的 key:
最后 target 结构中每个 Component 元素,只存在三个属性:uid,typeCode 和 flexType: