乐趣区

关于sap:SAP-Commerce-Cloud-SmartEdit-打开-Spartacus-home-page-的网络请求

  • 本地启动 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 组件。

退出移动版