如何在 SAP 电商云 Spartacus UI 中创建新的页面

简介: 如何在 SAP 电商云 Spartacus UI 中创建新的页面

Spartacus 中的页面基于使用相关 API 从 SAP Commerce 后端获取的 CMS 页面。来自 SAP Commerce 端的数据定义了元数据,如 url、标题等,以及页面的结构。结构意味着可用的部分类型以及分配给这些部分的 CMS 组件。Spartacus 接收此信息并为该结构提供真正的组件,包括逻辑、ui、响应式设计、样式等。


由于这种定义的方法,它需要 2 个步骤来创建新的 Spartacus 页面。首先,需要在 SAP Commerce 端创建 CMS 页面。其次,需要创建 Spartacus 端的组件并将其分配给 CMS 组件。


作为第一步,让我们从 SAP Commerce 端定义开始。创建一个新的 CMS 页面需要为不同类型的类型创建多个实例。让我们先谈谈这些类型。


模板:模板定义页面的部分

ContentPage:它是页面本身。它包含诸如 url、应使用哪个模板、标题等值。url 以这种类型存储在属性“标签”上。

ContentSlot:这是可以分配给 section 的类型,负责内容本身。它自己没有内容,但可以将组件分配给插槽。该组件包含基于斯巴达克斯方分配的内容。

CMS 组件:标准商务系统中有多种 CMS 组件可用,也可以创建新类型。如果不需要特殊属性,则可以使用通用 CMSFlexComponent 类型来创建组件实例。

ContentSlotForPage:该类型只处理将 ContentSlot 实例分配给 ContentPage 实例的部分。部分由这种类型的“位置”属性处理。

创建这些实例的 Impex 始终具有相同的结构,并且可以重复用于创建新的 CMS 页面。只需根据您的需要修改内容。它也可以在后台手动完成,但我建议使用 impex 并将其导入 HAC。只需登录,转到控制台选项卡和 ImpEx 导入并粘贴修改后的 impex 内容。Impex 如下所示:

$contentCatalog=electronics-spaContentCatalog
$contentCV=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Staged])[default=$contentCatalog:Staged]
$siteResource=jar:de.hybris.platform.spartacussampledataaddon.constants.SpartacussampledataaddonConstants&/spartacussampledataaddon/import/contentCatalogs/electronicsContentCatalog
###### Components and Pages ######
INSERT_UPDATE CMSFlexComponent;$contentCV[unique=true];uid[unique=true];name;flexType
;;ZBestsellerComponent;ZBestsellerComponent;ZBestsellerComponent
# Create the missing pages
INSERT_UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];name;masterTemplate(uid,$contentCV);label;defaultPage[default='true'];approvalStatus(code)[default='approved'];homepage[default='false']
;;ZBestseller;Bestseller Page;ContentPage1Template;/ourbestseller
INSERT_UPDATE ContentSlot;$contentCV[unique=true];uid[unique=true];name;active;cmsComponents(uid,$contentCV)
;;Section2A-ZBestseller;Section 2A Slot for Bestseller Page;true;ZBestsellerComponent
INSERT_UPDATE ContentSlotForPage;$contentCV[unique=true];uid[unique=true];position[unique=true];page(uid,$contentCV)[unique=true];contentSlot(uid,$contentCV)[unique=true]
;;Section2A-ZBestseller;Section2A;ZBestseller;Section2A-ZBestseller
#Language settings
$language=en
INSERT_UPDATE ContentPage;$contentCV[unique=true];uid[unique=true];title[lang=$language]
;;ZBestseller;Our Bestseller

通过导入这些行,将创建所需的实例。导入后直接可以通过定义的url调用新站点。在本例中,它将是http://localhost:4200/ourbestseller。


如果已经存在要重用的现有 CMS 组件,则可以删除 CMSFlexComponent 的创建。但是需要将现有组件分配给 ContentSlot 而不是新的 CMS 组件。在此用例中,不需要本文的第二步。


第一步,创建所有必需的 CMS 实例,我们从 Commerce 端获取具有结构的页面。在第二步中,我们定义 Spartacus 端的哪个组件是 CMS 组件的对应部分。


这很简单,可以通过配置来完成。只需创建一个新组件并将此配置添加到模块文件中即可。

   ConfigModule.withConfig(<CmsConfig>{
      cmsComponents: {
        ZBestsellerComponent: {
          component: BestsellerComponent,
        },
      },
    }),

‘ZBestsellerComponent’ 是 CMS 组件的 uid,‘BestsellerComponent’ 是 Angular 组件的类名。将此添加到配置后,组件的内容将显示在新创建的页面上。

SAP 电商云中的目录同步机制

我们知道在 Hybris 中,一个目录可以有一个目录版本(catalog version )列表。


产品目录和内容目录主要有 2 个目录版本


Staged

此目录版本的作用类似于测试目录版本,用于在进入在线目录版本之前定义目录并对其进行验证


Online

这个目录版本是用来在店面展示的。

所以在线目录版本应该始终是活动目录版本。


理想情况下,这些目录版本之间的内容不会发生变化。


同步是将目录内容从源目录版本复制到目标目录版本的过程。


当我们同步上演目录版本时,相同的上演内容将被复制到在线目录版本


我们可以通过指定源目录版本和目标目录版本来定义同步规则。


如何进行同步?


同步可以在 HMC 中完成,如下所示。


我以wearingProductCatalog 为例来说明。


搜索目录“apparelProductCatalog”


打开它,我们可以看到2个目录版本“ Staged ”和“ Online ”,我们可以看到在线版本处于活动状态。


打开暂存目录版本,然后单击目录版本选项卡。


在依赖目录版本下,右键单击并创建新的同步。


定义同步规则,源为 Staged,目标为 Online。


打开暂存目录版本并单击目录版本选项卡。


单击同步目录版本按钮。


选择源目录版本作为暂存,然后单击下一步。


将出现目标选项卡并验证目标是否符合同步规则。


点击开始并等待处理。


成功后,所有暂存版本的内容将被复制到在线版本。


注意:


  1. 每当我们同步时,都会在后端创建并执行同步作业。
  2. 我们也可以在驾驶舱(cockpit)中进行同步。
  3. 我们可以使用CMS cockpit进行内容目录和产品 cockpit进行产品目录同步。
  4. 我们甚至可以编写 cron 作业并将其配置为在一个时间间隔内运行以进行同步。


相关文章
|
27天前
|
JavaScript 前端开发
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
15 0
如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)
|
2月前
|
JavaScript 前端开发
vue element-ui分页插件 始终保持在页面底部样式
vue element-ui分页插件 始终保持在页面底部样式
19 0
|
2月前
|
机器学习/深度学习 人工智能 前端开发
机器学习PAI常见问题之web ui 项目启动后页面打不开如何解决
PAI(平台为智能,Platform for Artificial Intelligence)是阿里云提供的一个全面的人工智能开发平台,旨在为开发者提供机器学习、深度学习等人工智能技术的模型训练、优化和部署服务。以下是PAI平台使用中的一些常见问题及其答案汇总,帮助用户解决在使用过程中遇到的问题。
|
2月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
29 0
|
2月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
17 0
|
2月前
|
前端开发 JavaScript API
SAP UI5 sap.ui.require.toUrl 的作用介绍
SAP UI5 sap.ui.require.toUrl 的作用介绍
31 0
|
27天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
16 1
什么是 SAP ABAP 里的 Subscreen
|
27天前
|
网络架构 开发者 UED
Spartacus 2211 的 provideOutlet 方法扩展 UI
Spartacus 2211 的 provideOutlet 方法扩展 UI
10 0
Spartacus 2211 的 provideOutlet 方法扩展 UI
|
2月前
|
开发者 UED
关于 SAP UI5 sap.m.Column 的 demandPopin 属性
关于 SAP UI5 sap.m.Column 的 demandPopin 属性
15 0
|
2月前
|
JSON 前端开发 测试技术
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
SAP UI5 sap.ui.core.util.MockServer.simulate 方法介绍
21 0