如何在 /cms/pages OCC 端点中填充自定义 cms 组件的自定义属性
How to populate custom attributes for custom cms components in /cms/pages OCC endpoint
我已经创建了一个自定义的 cms 组件,它有几个我需要在 spartacus 店面中访问的自定义属性。在 API 端点 /cms/pages (PagesController) 我只是得到了这个组件的基本表示,没有自定义属性。
"uid" : "sofortComponent",
"uuid" : "eyJpdGVtSWQiOiJzb2ZvcnRDb21wb25lbnQiLCJjYXRhbG9nSWQiOiJlbGVjdHJvbmljcy1zcGFDb250ZW50Q2F0YWxvZyIsImNhdGFsb2dWZXJzaW9uIjoiT25saW5lIn0=",
"typeCode" : "***APMComponent",
"modifiedtime" : "2020-11-24T13:02:05.847+01:00",
"name" : "SOFORT @",
"container" : "false",
"media" : {
"code" : "sofort-icon",
"mime" : "image/png",
"url" : "/medias/?context=bWFzdGVyfGltYWdlc3wxNzU0fGltYWdlL3BuZ3xpbWFnZXMvaGVlL2hkMy84Nzk3MzAyOTE1MTAyLnBuZ3w4MzMxNmEzNTFhODBkYzEzYzVmNmUxZjgzNzI2MzU0MGI3MzJlNjg1ZWQzZjlhY2FjMWMxNDNkNDUyOTEzODQ4"
}
}, {
"uid" : "creditCardComponent",
"uuid" : "eyJpdGVtSWQiOiJjcmVkaXRDYXJkQ29tcG9uZW50IiwiY2F0YWxvZ0lkIjoiZWxlY3Ryb25pY3Mtc3BhQ29udGVudENhdGFsb2ciLCJjYXRhbG9nVmVyc2lvbiI6Ik9ubGluZSJ9",
"typeCode" : "...",
"modifiedtime" : "2020-11-23T14:03:28.472+01:00",
"name" : "Credit Card",
"container" : "false"
}, ... ]
我的组件 (sofortComponent) 有一个我想要填充的属性,但我找不到任何关于如何执行此操作的文档。
我试过向 cmsRenderingCmsItemConverterCustomPopulators
添加一个填充器,但这不允许我向模型添加复杂的属性(字符串是,但复杂的项目不是..)或者也许我正在做错了。
任何人都可以指导我查看文档或示例吗?
- 您是否尝试配置 Spartacus 端点以请求您的新字段,即
backend.occ.endpoints.pages
= 'cms/pages?fields=...'
?参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#configuring-endpoints
- 您可能还需要扩展 class
OccCmsPageNormalizer
以将 Occ 模型的新字段映射到 Spartacus UI 模型。参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#extending-the-ui-model
OCC api 中公开的字段由所谓的预配置集驱动。虽然默认资源具有关联的预配置集,但您需要为新类型创建预配置集。这是文档,请参阅 https://help.sap.com/viewer/9d346683b0084da2938be8a285c0c27a/1808/en-US/8c404c5886691014a48c88f4a49f9bf3.html
为 BASIC、DEFAULT 和 FULL 设置提供了预配置设置。如果您不请求特定字段映射,将使用为 DEFAULT 配置的 OCC 映射。但是,您可以在请求中指定字段映射,方法是使用预先配置的集合之一或命名特定字段。或两者的组合,即完全预配置 + 不属于预配置集的客户字段。
在 Spartacus 中,您可以通过提供端点配置来配置字段映射。这记录在 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#configuring-endpoints。这意味着即使您在后端根本没有预先配置的集合,您仍然应该能够请求数据。
我已经创建了一个自定义的 cms 组件,它有几个我需要在 spartacus 店面中访问的自定义属性。在 API 端点 /cms/pages (PagesController) 我只是得到了这个组件的基本表示,没有自定义属性。
"uid" : "sofortComponent",
"uuid" : "eyJpdGVtSWQiOiJzb2ZvcnRDb21wb25lbnQiLCJjYXRhbG9nSWQiOiJlbGVjdHJvbmljcy1zcGFDb250ZW50Q2F0YWxvZyIsImNhdGFsb2dWZXJzaW9uIjoiT25saW5lIn0=",
"typeCode" : "***APMComponent",
"modifiedtime" : "2020-11-24T13:02:05.847+01:00",
"name" : "SOFORT @",
"container" : "false",
"media" : {
"code" : "sofort-icon",
"mime" : "image/png",
"url" : "/medias/?context=bWFzdGVyfGltYWdlc3wxNzU0fGltYWdlL3BuZ3xpbWFnZXMvaGVlL2hkMy84Nzk3MzAyOTE1MTAyLnBuZ3w4MzMxNmEzNTFhODBkYzEzYzVmNmUxZjgzNzI2MzU0MGI3MzJlNjg1ZWQzZjlhY2FjMWMxNDNkNDUyOTEzODQ4"
}
}, {
"uid" : "creditCardComponent",
"uuid" : "eyJpdGVtSWQiOiJjcmVkaXRDYXJkQ29tcG9uZW50IiwiY2F0YWxvZ0lkIjoiZWxlY3Ryb25pY3Mtc3BhQ29udGVudENhdGFsb2ciLCJjYXRhbG9nVmVyc2lvbiI6Ik9ubGluZSJ9",
"typeCode" : "...",
"modifiedtime" : "2020-11-23T14:03:28.472+01:00",
"name" : "Credit Card",
"container" : "false"
}, ... ]
我的组件 (sofortComponent) 有一个我想要填充的属性,但我找不到任何关于如何执行此操作的文档。
我试过向 cmsRenderingCmsItemConverterCustomPopulators
添加一个填充器,但这不允许我向模型添加复杂的属性(字符串是,但复杂的项目不是..)或者也许我正在做错了。
任何人都可以指导我查看文档或示例吗?
- 您是否尝试配置 Spartacus 端点以请求您的新字段,即
backend.occ.endpoints.pages
='cms/pages?fields=...'
?参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#configuring-endpoints - 您可能还需要扩展 class
OccCmsPageNormalizer
以将 Occ 模型的新字段映射到 Spartacus UI 模型。参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#extending-the-ui-model
OCC api 中公开的字段由所谓的预配置集驱动。虽然默认资源具有关联的预配置集,但您需要为新类型创建预配置集。这是文档,请参阅 https://help.sap.com/viewer/9d346683b0084da2938be8a285c0c27a/1808/en-US/8c404c5886691014a48c88f4a49f9bf3.html
为 BASIC、DEFAULT 和 FULL 设置提供了预配置设置。如果您不请求特定字段映射,将使用为 DEFAULT 配置的 OCC 映射。但是,您可以在请求中指定字段映射,方法是使用预先配置的集合之一或命名特定字段。或两者的组合,即完全预配置 + 不属于预配置集的客户字段。
在 Spartacus 中,您可以通过提供端点配置来配置字段映射。这记录在 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#configuring-endpoints。这意味着即使您在后端根本没有预先配置的集合,您仍然应该能够请求数据。