电子商务网站显示不同类别产品的不同字段。这意味着它们实现了动态模式。这种动态模式使用了哪些技术?
我知道Magento使用的是EAV模型。是否有其他框架使用的其他选项,如ATG,Broadleaf,IBM Websphere commerce等?
由于
答案 0 :(得分:1)
将产品扩展为在ATG中具有类别特定属性的常用方法是扩展product
存储库项描述符。
通常,您将为特定于类别的产品创建新的子类型产品,并为每个特定于类别的属性添加属性。
例如,您可能希望定义具有“屏幕尺寸”属性的“TV产品”子类型产品
默认情况下,只有一种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
属性。
答案 1 :(得分:0)
在Broadleaf中,有两种方法可以添加自定义属性:
ProductImpl
Hibernate实体进行子类化,将所有自定义属性放在新的MYCOMPANY_PRODUCT表中。在http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial ProductImpl
和SkuImpl
)都附加了一个Map属性映射,您可以在不创建新表或新子类的情况下添加自定义属性。使用Broadleaf自定义字段模块(商业模块),这些新的动态字段可以自动显示在管理表单中