本地启动Hybris服务器本地启动SpartacusBackofficeWCMS站点维护的预览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-a97f1560226aHTTP/1.1响应:获取CSRSpartacus主页:完整网址:http://localhost:4299/powerto...粘贴此直接输入浏览器地址栏的url也可以:尝试另一个不存在的cmsTicketId。http://localhost:4299/powerto...似乎仍然有效:为了让SmartEdit能够在Spartacus中加载页面,它需要获取所需的所有上下文数据,包括站点、内容目录和内容目录version,也可以指定语言,或者日期和时间。因此,需要将cmsTicketId附加到从Spartacus发送到后端的任何CMS请求。这些cmsTicketId可以在ChromeDevTools中观察到。Spartacus在正常模式下运行,看不到此字段。在Spartacus中,我们有CmsTicketInterceptor。如果cmsTicketId存在并且请求是特定于cms的,它将添加cmsTicketId作为请求参数之一。使用cmsTicketId发送CMS请求,响应JSON数据中会有一个属性字段。properties包含包含CMS项目所需的动态属性组。例如,CMS页面中的属性可能包含以下数据:在Spartacus中,我们有DynamicAttributeService。它可以向DOM添加动态属性。这些属性是从从后端接收的CMS项目的属性中提取的。要将SmartEditHTML标记合约添加到Slot,我们有以下函数:前端渲染,店面重新渲染页面而不是SmartEdit。在这种情况下,Spartacus在window.smartedit命名空间中实现了renderComponent函数,如以下代码摘录所示:window.smartedit.renderComponent=function(componentId,componentType,parentId){...};如果parentId不存在,则CMSitem是一个插槽,然后renderComponent实际上是刷新整个CMS页面。如果parentId确实存在,则CMS项目是一个组件,在这种情况下,只会刷新此CMS组件。
