如何在 /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 添加一个填充器,但这不允许我向模型添加复杂的属性(字符串是,但复杂的项目不是..)或者也许我正在做错了。

任何人都可以指导我查看文档或示例吗?

  1. 您是否尝试配置 Spartacus 端点以请求您的新字段,即 backend.occ.endpoints.pages = 'cms/pages?fields=...'?参见 https://sap.github.io/spartacus-docs/connecting-to-other-systems/#configuring-endpoints
  2. 您可能还需要扩展 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。这意味着即使您在后端根本没有预先配置的集合,您仍然应该能够请求数据。