首页 > 其他分享 >SAP Spartacus UI 中的 CmsTicketInterceptor

SAP Spartacus UI 中的 CmsTicketInterceptor

时间:2023-06-19 21:55:07浏览次数:65  
标签:CmsTicketInterceptor Spartacus cmsTicketId UI SAP CMS smartedit 页面

在 Spartacus UI 发起的 OCC API 请求的 URL 中,您可能会注意到一个名为 cmsTicketId 的字段。这个字段的含义与用途如下:

cmsTicketId 是一个标识符,用于关联 Spartacus UI 与 SAP Commerce Cloud 后端 CMS (Content Management System) 的会话。CMS 是一个用于管理网站内容的系统,如页面、组件和其他与前端显示相关的元素。在 SAP Commerce Cloud 中,CMS 通过 CMS Cockpit 或者 SmartEdit 工具进行管理。为了确保在 Spartacus UI 中显示的内容与 CMS 的状态保持一致,需要使用一个会话标识符来关联二者。这就是 cmsTicketId 的作用。

当用户在 CMS 中进行更改并预览更改结果时,系统会创建一个 CMS 会话票证(CMS Ticket)。这个票证包含了当前 CMS 会话的所有更改,但尚未发布到生产环境。Spartacus UI 会将这个票证的 ID 作为 cmsTicketId 参数传递给 OCC API,以便在 API 请求中获取与该票证关联的 CMS 数据。这样,用户就可以在 Spartacus UI 中实时预览他们在 CMS 中所做的更改。

cmsTicketId 参数只在开发或预览模式下使用,以确保用户能够预览未发布的 CMS 更改。在生产环境中,Spartacus UI 通常不会传递 cmsTicketId 参数,因为生产环境只显示已发布的 CMS 内容。

为了让SmartEdit能够在可组合的商店界面加载页面,需要向SmartEdit发送所有所需的上下文数据。这包括站点、内容目录和内容目录版本,还可以指定语言、日期和时间。因此,需要将cmsTicketId附加到从可组合商店界面发送到后端的任何CMS请求中。

为此,可组合商店界面具有CmsTicketInterceptor。如果存在cmsTicketId并且请求指定了cms,拦截器会将cmsTicketId添加为请求参数之一。以下是一个示例:

https://localhost:9002/occ/v2/electronics-spa/cms/pages?lang=en&curr=USD&cmsTicketId=647947668977012877c9ca9d-6be3-43d1-ac3a-e1f4d017a70c&pageLabelOrId=login&pageType=ContentPage

拿到的响应如下:

把得到的 page uuid 进行 base64 解码:

eyJpdGVtSWQiOiJsb2dpbiIsImNhdGFsb2dJZCI6ImVsZWN0cm9uaWNzLXNwYUNvbnRlbnRDYXRhbG9nIiwiY2F0YWxvZ1ZlcnNpb24iOiJTdGFnZWQifQ==

得到结果:

{"itemId":"login","catalogId":"electronics-spaContentCatalog","catalogVersion":"Staged"}

如果使用cmsTicketId发送CMS请求,响应的JSON数据中将包含一个properties字段。properties字段包含了所需的动态属性组,这些属性组适用于包含的CMS项。例如,CMS页面中的属性可能包含以下数据:

...
"label" : "homepage",
"properties" : {
    "smartedit" : {
        "classes" : "smartedit-page-uid-homepage smartedit-page-uuid-eyJpdGVtSWQiOiJob21lcGFnZSIsImNhdGFsb2dJZCI6ImVsZWN0cm9uaWNzLXNwYUNvbnRlbnRDYXRhbG9nIiwiY2F0YWxvZ1ZlcnNpb24iOiJTdGFnZWQifQ== smartedit-catalog-version-uuid-electronics-spaContentCatalog/Staged"
        }
    }
}

在smartedit组中,存在一个classes属性。classes属性的值是此特定CMS页面所需的SmartEdit合同。因此,您需要将这些类添加到HTML body标签的类列表中。如果您查看HTML页面源代码,您将看到body标签具有此classes属性。以下是一个示例:

<body class="smartedit-page-uid-homepage smartedit-page-uuid-eyJpdGVtSWQiOiJob21lcGFnZSIsImNhdGFsb2dJZCI6ImVsZWN0cm9uaWNzLXNwYUNvbnRlbnRDYXRhbG9nIiwiY2F0YWxvZ1ZlcnNpb24iOiJTdGFnZWQifQ== smartedit-catalog-version-uuid-electronics-spaContentCatalog/Staged">
    <cx-storefront ng-version="8.0.0" class="stop-navigating"><header><cx-page-layout section="header" ng-reflect-section="header" class="header"><!--bindings={
...

标签:CmsTicketInterceptor,Spartacus,cmsTicketId,UI,SAP,CMS,smartedit,页面
From: https://www.cnblogs.com/sap-jerry/p/17492308.html

相关文章

  • SAP Commerce Cloud SolrIndexNotFoundException 异常 - 做 full indexing 的详细位置
    Console看到消息:NoActiveindexfound,FULLindexeroperationmustbeperformedbeforeanyotheroperationCausedby:de.hybris.platform.solrfacetsearch.solr.exceptions.SolrIndexNotFoundException:de.hybris.platform.servicelayer.exceptions.UnknownIdentifie......
  • 什么是 SAP Commerce Cloud 的 Content Slot
    内容槽(Contentslots)是组件的容器。要使组件在前端页面上显示,必须将其添加到内容槽中。内容槽分为三种类型:页面内容槽(Pagecontentslots):页面内容槽,也简称为槽,属于所在页面,即属于该页面实例。当向槽添加内容时,内容将显示在包含该槽的页面上。共享内容槽(Sharedcontentslots):共......
  • 什么是 SAP Commerce Cloud SmartEdit 的 preview API
    PreviewAPI使得SmartEdit能够将商户网站加载到请求的体验环境上的iframe中。体验环境是指特定站点、目录和目录版本的商户网站,并且还可以是指定的语言、日期和时间。为了以指定的体验环境呈现商户网站,SmartEdit将请求的商户网站加载到请求的体验环境的iframe中。为了在请求的体......
  • macOS Big Sur ,git gui 不起作用
    如何解决将软件更新到macOSBigSur到11.4后,gitgui不起作用?开发过程中遇到将软件更新到macOSBigSur到11.4后,gitgui不起作用的问题如何解决?下面主要结合日常开发的经验,给出你关于将软件更新到macOSBigSur到11.4后,gitgui不起作用的解决方法建议,希望对你解决......
  • BUUCTF:[GKCTF2020]Harley Quinn
    https://buuoj.cn/challenges#[GKCTF2020]Harley%20QuinnHeathens末尾存在DTMF码(电话拨号码)将这一段截取出来,使用工具dtmf2num识别#22283334447777338866#对照即可得到#ctfisfun#题目压缩包上有提示:FreeFileCamouflageFreeFileCamouflage是一款将重要文档以AES加密算法存放......
  • 03后台主页模块设计,simpleui后台管理,轮播图接口,跨域问题详解,前台主页功能
    1后台主页模块设计#1创建后台主页模块(一个模块一个app)python../../manage.pystartapphome#2在models中写轮播图表 -写一个基表BaseModel-写轮播图表#3迁移###BaseModel##########fromdjango.dbimportmodelsclassBaseModel(models.Model):creat......
  • 关于 SAP Commerce Cloud 本地安装用 root user 执行安装脚本的问题
    在linuxserver上执行./install-rb2c_acc是不是不能用rootuser去做?遇到警告消息:Errorcreatingbeanwithname'defaultSolrServerService'definedinclasspathresource[global-solrserver-spring.xml]:Invocationofinitmethodfailed;nestedexceptionisde.hy......
  • 什么是 SAP Commerce Cloud 的 Flexible Search?
    SAPCommerceCloud的FlexibleSearch是一种强大而灵活的查询语言和工具,用于在SAPCommerceCloud平台上执行复杂的数据库查询操作。它提供了一种高度可定制的方式来检索和操作存储在CommerceCloud数据库中的数据。FlexibleSearch可以用于在产品、订单、用户等对象之间进行联接......
  • SAP Commerce Cloud 2205 生成本地用于开发目的的 license key
    参考note.打开应用:https://launchpad.support.sap.com/#/licensekey/wizard/installation/SAP-INTERN/点击AddSystem按钮:这是我过去申请过的,版本是2105:从下拉菜单里选择各个字段的值:然后点击AddLicenseKey:写个2099年到期,一劳永逸:HardwareKey:Y4989890650点......
  • SAP Commerce Cloud 通过 SmartEdit 添加 Component 的一个例子
    如下图所示:位于ProductListLot内:url:http://localhost:4200/electronics-spa/en/USD/Open-Catalogue/Cameras/Digital-Cameras/Digital-Compacts/c/576观察到的OCC请求:https://localhost:9002/occ/v2/electronics-spa/cms/pages?pageType=CategoryPage&code=576&lang=......