Hybris如何在产品层级新增属性并在商品详情页展示
Hybris产品新增自定义属性并展示在详情页操作步骤
1. 数据建模:定义产品层级自定义属性
- 找到你的自定义扩展目录下
resources文件夹内的*-items.xml文件 - 在
Product类型的属性声明块中新增自定义属性,参考示例:
<attribute qualifier="customProductLabel" type="java.lang.String"> <persistence type="property" /> <modifiers read="true" write="true" search="true" optional="true" /> <description>自定义产品标识属性</description> </attribute>
若需要多语言属性,将type修改为
localized:java.lang.String即可
- 执行
ant all命令完成代码构建 - 进入Hybris管理控制台(HAC),执行更新系统操作,勾选你修改的自定义扩展、
Update running system、Clear hMC configuration from database三个选项,执行完成后新属性会同步到数据库
2. 后台配置:支持属性手动/批量赋值(可选,不需要运营赋值可跳过)
- 进入Backoffice后台,打开类型编辑器找到
Product类型,调整产品编辑界面布局,将新增的自定义属性拖拽到对应字段分组中,保存配置后运营即可在产品编辑页手动给属性赋值 - 如需批量赋值,可使用Impex导入,参考示例:
INSERT_UPDATE Product;code[unique=true];customProductLabel ;P0001;限量款 ;P0002;会员专属
3. 前端配置:商品详情页属性渲染
场景1:使用传统Accelerator(JSP渲染)
- 调整产品详情页对应Controller逻辑,将自定义属性添加到返回前端的Model数据中
- 找到详情页JSP视图文件(默认路径为自定义扩展下
web/webroot/WEB-INF/views/responsive/pages/product/productDetailsPage.jsp),在需要展示的位置插入渲染代码,参考示例:
<c:if test="${not empty product.customProductLabel}"> <span class="custom-product-label">${product.customProductLabel}</span> </c:if>
- 执行
ant clean all重启服务后即可看到效果
场景2:使用Spartacus前后端分离架构
- 在自定义Spartacus扩展中扩展Product类型定义,新增自定义属性的字段声明
- 在Spartacus配置中添加OCC接口属性白名单,在
backend.occ.products.scopes.detail.fields配置项中加入你的自定义属性字段名,确保接口返回该字段值 - 修改产品详情页对应组件的模板文件,在合适位置插入属性渲染代码,参考示例:
<div *ngIf="product?.customProductLabel" class="custom-product-label"> {{ product.customProductLabel }} </div>
- 构建前端代码后重启前端服务即可
内容的提问来源于stack exchange,提问作者Vijay Rohith
相关产品推荐
相关产品推荐

