【问题标题】:Dynamic schema in E-commerce电子商务中的动态模式
【发布时间】:2016-03-02 20:24:43
【问题描述】:

电子商务网站针对不同类别的产品显示不同的字段。这意味着它们实现了动态模式。这种动态模式使用了哪些技术?

我知道 Magento 使用 EAV 模型。是否有其他框架使用 ATG、Broadleaf、IBM Websphere commerce 等其他选项?

谢谢

【问题讨论】:

    标签: e-commerce atg broadleaf-commerce


    【解决方案1】:

    在 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>
    

    然后您可以在子类型中添加propertytable 元素来表示特定于类别的属性,例如screenSize

    从那里开始,您可以像对待任何其他类型的产品一样对待tvProduct。它们将出现在product 类型的项目的任何查询等中 - 但是当您有一个tvProduct 的实例时,它将有一个额外的screenSize 属性。

    【讨论】:

      【解决方案2】:

      在 Broadleaf 中,有两种方法可以添加自定义属性:

      1. 对与 BLC_PRODUCT 表对应的现有 ProductImpl Hibernate 实体进行子类化,将所有自定义属性放在新的 MYCOMPANY_PRODUCT 表中。 http://www.broadleafcommerce.com/docs/core/current/tutorials/core-tutorials/extending-entities-tutorial 有一个很好的教程
      2. 大多数 Broadleaf 实体(如 ProductImplSkuImpl)都附有 Map 属性映射,您可以在不创建新表或新子类的情况下添加自定义属性。借助 Broadleaf 自定义字段模块(商业模块),这些新的动态字段可以自动显示在管理表单中

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-12
        • 1970-01-01
        • 2016-12-06
        • 2021-03-15
        • 2017-12-15
        • 2015-07-03
        • 1970-01-01
        相关资源
        最近更新 更多