【发布时间】:2016-03-02 20:24:43
【问题描述】:
电子商务网站针对不同类别的产品显示不同的字段。这意味着它们实现了动态模式。这种动态模式使用了哪些技术?
我知道 Magento 使用 EAV 模型。是否有其他框架使用 ATG、Broadleaf、IBM Websphere commerce 等其他选项?
谢谢
【问题讨论】:
标签: e-commerce atg broadleaf-commerce
电子商务网站针对不同类别的产品显示不同的字段。这意味着它们实现了动态模式。这种动态模式使用了哪些技术?
我知道 Magento 使用 EAV 模型。是否有其他框架使用 ATG、Broadleaf、IBM Websphere commerce 等其他选项?
谢谢
【问题讨论】:
标签: e-commerce atg broadleaf-commerce
在 ATG 中扩展产品以具有特定于类别的属性的常用方法是扩展 product 存储库项描述符。
通常,您会为特定类别的产品创建新的产品子类型,并为每个特定类别的属性添加属性。
例如,您可能想要定义具有屏幕尺寸属性的“电视产品”产品子类型
默认情况下,product 只有一种类型。这一事实由没有选项的 type 属性表示。
<property name="type" data-type="enumerated" column-name="product_type" writable="false" hidden="true"> </property>
您可以对其进行扩展以表示多种类型和子类型。
<property name="type" data-type="enumerated" column-name="product_type" writable="false" hidden="true">
<option value="tv"/>
<option value="option2"/>
</property>
然后,您可以将子类型项目描述符定义为
<item-descriptor name="tvProduct" super-type="product" sub-type-value="tv">
<!-- properties -->
</item-descriptor>
然后您可以在子类型中添加property 和table 元素来表示特定于类别的属性,例如screenSize。
从那里开始,您可以像对待任何其他类型的产品一样对待tvProduct。它们将出现在product 类型的项目的任何查询等中 - 但是当您有一个tvProduct 的实例时,它将有一个额外的screenSize 属性。
【讨论】:
在 Broadleaf 中,有两种方法可以添加自定义属性:
ProductImpl Hibernate 实体进行子类化,将所有自定义属性放在新的 MYCOMPANY_PRODUCT 表中。 http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial 有一个很好的教程
ProductImpl 和 SkuImpl)都附有 Map 属性映射,您可以在不创建新表或新子类的情况下添加自定义属性。借助 Broadleaf 自定义字段模块(商业模块),这些新的动态字段可以自动显示在管理表单中【讨论】: