这是Jerry 2021年的第 19 篇文章,也是汪子熙公众号总共第 290 篇原创文章。

本文分别针对 SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI,介绍两个通过更改 CSS 达到更改其 UI 显示风格的例子。

不少 SAP 产品都提供了个性化设置,允许 Key User 通过这些设置对 SAP 产品 UI 风格进行微调。下图是 SAP Cloud for Customer 个性化设置的界面。

除了这些个性化设置外,更灵活的界面风格调整,通常采用二次开发的方式进行。

Jerry 2015年所在的 SAP 成都研究院 CRM Fiori 开发团队,负责一个名叫 My Opportunities 的 Fiori 应用,该应用没有采取现在流行的 Fiori Elements + CDS view 实现,而是直接采用原生的 SAP UI5 开发而成。

当时有个客户,对 Fiori 应用 Footer 工具条里的 Edit 按钮的蓝色背景色提出质疑,因为该客户使用 Android 设备访问该应用,在 Android 设备上,任何按钮被点击的瞬间,背景都会被蓝色高亮。因此当时 SAP UI5 Edit 按钮这个默认显示的蓝色背景色,让客户很难区分该按钮是否真正被点击过。

因此客户联系 SAP,询问是否能够将该 Edit 按钮的蓝色背景色去掉,让其和上图右边的 Follow Up 及 Messages 按钮显示风格一致。

Jerry 接到客户的抱怨后,分析了 SAP UI5 Footer 工具条的源代码,发现 Edit 按钮的蓝色背景色是有意为之:按照 Fiori UX Guideline,Edit 按钮的语义类型是 Emphasized ( 下图第87行的代码:sap.m.ButtonType.Emphasized)

而在 SAP UI5 标准的 CSS 文件里,Emphasized 类型的按钮,背景色被设置为深蓝色。

搞清楚 Fiori 应用按钮背景色的实现原理之后,解决方案也就不难设计了。My Opportunities 这个 CRM Fiori 应用,在其 Footer 工具条的渲染逻辑上,留了一个 extension hook ( ABAP 开发人员可以将其理解成 SAP UI5 版本的 BAdI Definition).

最后我建议客户,实现这个 extension hook,在代码里将 SAP UI5 Footer 工具条标准的 Edit 按钮删除(下图第9行代码),然后在 hook 里自行创建一个普通的按钮 ( 第3行 ) 即可。当然这个按钮点击之后,执行的逻辑需与删除的标准 Edit 按钮完全一致,因此需要给其 onBtnPressed 属性,绑定上原始 Edit 按钮的点击事件处理函数:onEdit ( 第5行 ).

最后的效果:Edit 的高亮背景色消失了,客户很满意。

关于这个客户需求的更多细节,请参考我当时写的博客.

看另一个举一反三的需求:如果客户想把 Edit 按钮旁边的 Follow Up 按钮的背景色设置成红色呢?

解决方案:在 SAP UI5 增强项目代码里,重新实现 SAP UI5 onAfterRendering hook, 找到 Follow Up 按钮的引用 ( 下图第二行 oButtonListHelper.aButtons 数组里,包含了 Footer 工具条里所有按钮,数组索引为1的元素即 Follow Up 按钮 ), 然后给其添加一个新的 CSS 类:jerryButton.

这个自定义的 CSS 类 jerryButton,嵌入在增强的 XML View 里,或者定义在增强项目自定义的 CSS 文件里均可。

最后的运行时效果:

下面再来说说 SAP Commerce Cloud (电商云) 的 UI 显示风格调整。

不同于 SAP CRM Fiori 应用,SAP Commerce Cloud UI 基于开源框架 SAP Spartacus,后者使用 Angular 进行开发,并通过 core,Storefront 和 styles 这些库文件的方式,发布给客户使用。

客户新建一个 Angular 应用,在 package.json里导入 Spartacus 库文件的依赖,就可以进行 Storefront UI 的二次开发工作了。

SAP Commerce Cloud UI 这种基于 Spartacus 库文件的二次开发方式,使得其通过 CSS 调整 UI 风格的难度,同本文前半部分介绍的 SAP CRM Fiori 应用相比,要降低不少。

在 Partners 基于 SAP Spartacus 创建的 SAP Commerce Cloud UI Angular 应用里,有一个自动生成的 styles.scss 文件,里面有一行 import 语句,导入了 SAP Spartacus 所有标准的 CSS styles:

我们可以在 styles.scss 文件里,对 SAP Commerce Cloud UI 的界面,按照需要进行 CSS 调整。

举个例子:假设我想调整购物车页面里这行 “ORDER SUMMARY” 的外观:

在 Chrome 开发者工具里,找到其对应的选择器为:cx-order-summary h4

然后在 styles.scss 里使用该选择器,覆盖掉 Spartacus styles 库里的原始设置即可:

最后运行时的效果:

假设我想把下图 Order Summary 和 Coupon 页面的文本颜色变成绿色,字体加粗:

为了减少工作量,避免对 Order Summary 和 Coupon 这两个区域对应的选择器,重复施加相同的 CSS 设置,我们可以将重复的 CSS 设置,定义在 %jerry-custom-div 里(类似编程语言里的宏), 然后在 cx-order-summary 和 cx-cart-coupon 里使用 @extend 直接引用这个公用定义。

最后的运行时效果:

更多阅读

  • 从产品展示页面谈谈Hybris的特有概念和设计结构

  • 从产品展示页面谈谈Hybris系列之二: DTO, Converter和Populator

  • 从产品展示页面谈谈Hybris系列之三:Hybris Service层介绍

  • SAP Spartacus简介

  • Jerry在2020 SAP全球技术大会的分享:SAP Spartacus技术介绍的文字版

  • 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发

  • SAP Commerce Cloud (电商云) UI 的懒加载功能

更多Jerry的原创文章,尽在:“汪子熙”:

SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格相关推荐

  1. SAP Commerce Cloud ( 电商云 ) 路由路径的自定义配置与开发

    这是Jerry 2021年的第 24 篇文章,也是汪子熙公众号总共第 295 篇原创文章. 最近看到 SAP天天事 公众号发布的一篇文章: 基于 SAP Commerce Cloud,老娘舅构建的餐饮 ...

  2. 一小时内在本地搭建 SAP Commerce Cloud(电商云)的前后台运行环境

    这是Jerry 2021年的第 21 篇文章,也是汪子熙公众号总共第 292 篇原创文章. 最近一段时间, Jerry 陆续把自己在 SAP Commerce Cloud (电商云) 新一代前台页面开 ...

  3. SAP 产品一脉相承的 UI 增强思路,在 SAP Commerce Cloud(电商云) UI 增强实现中的体现

    本文首先快速回顾几种 SAP 产品中的 UI 增强思路,然后具体介绍该思路是如何在 SAP Commerce Cloud(电商云) UI 增强中贯彻实施的. Jerry 之前的文章:Jerry 在 2 ...

  4. 从一个实际的例子出发,谈谈SAP Commerce Cloud电商云的UI自定义开发

    昨天 Jerry 读到了 SAP天天事 公众号上发布的一篇文章:多家知名企业选择 SAP Commerce Cloud 为客户提供卓越购物体验. SAP 日前宣布,锦江国际旗下的全球酒店供应链平台锦江 ...

  5. SAP Commerce Cloud (电商云) UI 的懒加载功能

    最近工作中处理了 SAP Commerce Cloud (电商云) UI 的一个懒加载 (Lazy Load) 功能的问题,这里把自己学到的东西做个记录. UI 懒加载,有时又称惰性加载,延迟加载,是 ...

  6. SAP ABAP 业务开关和 SAP 电商云的 Feature Level

    这是 Jerry 2021 年的第 72 篇文章,也是汪子熙公众号总共第 349 篇原创文章. 基于 ABAP 技术栈的 SAP 产品,客户可以通过安装 Enhancement Package(增强包 ...

  7. 在 SAP CRM Fiori 应用上给 Opportunity 订单添加 note 的后台执行明细

    在 SAP CRM Fiori 应用上给 Opportunity 订单添加 note 的后台执行明细: 修改某些字段之后点击保存按钮: I change "chance of success ...

  8. SAP CRM Fiori Launchpad 登录之后,看不见任何 tile 的解决办法

    我登录 SAP CRM Fiori gateway 系统,发现 Launchpad 里一个 tile 也没有: 解决方法 事物码 PFCG,从标准的 role SAP_CRM_BCR_SALESREP ...

  9. SAP CX Upscale Commerce : SAP全新推出的电商云平台

    大家好,我是Andy Chen,是SAP成都研究院年轻的SAP CX Upscale Commerce (后面将会以Upscale简称)开发团队的一名产品经理.CX的全称是Customer Exper ...

最新文章

  1. Android应用程序键盘(Keyboard)消息处理机制分析(20)
  2. Java 数组的 12 个最佳方法
  3. linux查看硬件信息
  4. 【BZOJ5470】【FJOI2018】—所罗门王的宝藏(BFS)
  5. Rabbit寻宝记(1)
  6. ContentProvider的创建和使用
  7. linux调用v4l2获取视频,嵌入式Linux:V4L2视频采集操作流程和接口说明
  8. java arraycopyof_Java中System.arraycopy()和Arrays.copyOf()的区别
  9. console.log打印值,颜色 - 解决篇
  10. python学习之dict的items(),values(),keys()
  11. raspberrypi 与 arduino 使用 nRF24L01+ 通信 -- arduino为接收端
  12. idea中svn颜色代表的文件状态
  13. DCEP即将破茧成蝶,数字货币新革命来了
  14. 【基于LM358和LM386的话音放大器设计】
  15. 好领导,本来应是挖渠人
  16. android厨房的使用方法,懒人生活的福音:Android在厨房_软件资讯技巧应用-中关村在线...
  17. 漏刻有时云守护数据可视化画质感知状态迭代说明文档
  18. java为word添加水印,图片水印和文字水印
  19. gvim 换行符替换
  20. 树莓派无线中继的实现

热门文章

  1. springmvc+mybatis+dubbo+zookeeper分布式架构
  2. Spring boot 默认静态资源路径与手动配置访问路径的方法
  3. 002 在大数据中基础的llinux基本命令
  4. CALayer与UIBezierPath
  5. Android 实用开源控件
  6. 分享10个jQuery页面动态编辑插件
  7. JavaScript类的几种写法
  8. Ospf在广播网络中建立邻居关系的详细过程
  9. Mac解决Apache2目录权限问题
  10. 乙级(Basic Level) 1009 数字黑洞