- 本地启动 Hybris 服务器
- 本地启动 Spartacus
- Backoffice WCMS site 里保护的 preview url 为:
http://localhost:4299/powertools-spa
- 确保浏览器里输出
http://localhost:4299/powertools-spa
之后,能够失常拜访。url 主动变为:http://localhost:4299/powertools-spa/en/USD/
第一个申请,这个 cmsTicketId
不是 Spartacus 生成的。应该是 SmartEdit 从 Hybris 服务器获取的。
GET /powertools-spa/cx-preview?cmsTicketId=647882292103273617673d6f-5d1f-4c1e-96c0-a97f1560226a HTTP/1.1
response:失去一个 CSR Spartacus home page:
残缺的 url:http://localhost:4299/powerto…
把这个 url 间接粘贴到浏览器地址栏,也能工作:
换一个不存在的 cmsTicketId
试试。
http://localhost:4299/powerto…
仿佛依然能够工作:
为了使 SmartEdit 可能在 Spartacus 中加载页面,它须要获取所有须要的上下文数据,包含站点、内容目录和内容目录版本,也能够是指定的语言,或日期和工夫。因而,cmsTicketId 须要附加到从 Spartacus 发送到后端的任何 CMS 申请中。
这些 cmsTicketId
能够在 Chrome 开发者工具里察看到。Spartacus 在失常模式下运行,是看不到这个字段的。
在 Spartacus 中,咱们有 CmsTicketInterceptor。如果 cmsTicketId 存在并且申请是 cms 指定的,它会将 cmsTicketId 增加为申请参数之一。
应用 cmsTicketId 发送 CMS 申请,响应 JSON 数据中会有 properties 字段。properties 蕴含蕴含 CMS 我的项目所需的动静属性组。例如,CMS 页面中的属性可能蕴含以下数据:
在 Spartacus 中,咱们有 DynamicAttributeService。它能够为 DOM 增加动静属性。这些属性是从从后端接管的 CMS 我的项目的属性中提取的。
要将 SmartEdit HTML 标记合约增加到 Slot,咱们有以下性能:
private addSmartEditContract(slot: ContentSlotData): void {
this.dynamicAttributeService.addDynamicAttributes(
slot.properties,
this.hostElement.nativeElement,
this.renderer
);
}
对于前端出现的页面,店面从新出现页面而不是 SmartEdit。在这种状况下,Spartacus 在 window.smartedit 命名空间中实现了 renderComponent 函数,如以下代码摘录所示:
window.smartedit.renderComponent = function(componentId, componentType, parentId) {...};
如果 parentId 不存在,则 CMS 我的项目是一个插槽,而后 renderComponent 会理论刷新整个 CMS 页面。如果 parentId 的确存在,则 CMS 项是一个组件,在这种状况下,仅刷新此 CMS 组件。