ATG Catalog

一:Catalog

Catalog 是由相关的Repository Item 组成的。它形成或者组织用户进行定位或者购买的导航性质的架构。

我们也可以理解为它是一颗树的rootcatalog.它可以包含Category. 引用的形式就是通过属性rootCategories.

 

二: Category

Category 就是对Catalog 以树的形式进行组织。其中最高级别的Category就是Root Category. Root Category下面的category就是child Category. Root Category 是一个站点的导航的起点。

Category 下面还可以包括Category product所以 Category Product 都保持着的对category的引用。

 

三: Product

Product 就是对sku的一个集合。是整个站点的导航的结束点。Product 是不可以销售的。

 

: Sku Stock Keeping Unit

就是指单个可以销售的产品。包括组合式的那种产品。

他可以分为三种类型,当然,如果要扩展另说。

分别为:

Simple SKU

Sku Bundle

Configurable Sku

 

扩展Product Catalog

所谓的扩展其实具体可以分为三种类型:

一:对已经存在的Items type 进行添加额外的属性。

比如存在的categories,products,skus等等。添加额外的属性需要依赖于XML 联合。

Steps:(比如需要创建一个新的属性EnterprsieProductId

 

1 在数据库中创建一张新的表MUSIC_PRODUCT

CREATE TABLE MUSIC_A.MUSIC_PRODUCT(

PRODUCT_ID VARCHAR2(40) NOT NULL REFERENCES DCS_PRODUCT(PRODUCT_ID),

    ENTERPRISE_PRODUCT_ID VARCHAR2(40) ,

    PRIMARY KEY (PRODUCT_ID)

);

2 customCatalog.xml 的定义文件中创建添加一个新的属性

<table name=“music_product” type=“auxiliary” id-column-name=“product_id”>

   <property name=“enterpriseProductId” display-

Name=“Enterprise Id” data-type=“string” colu

Mn-name=“enterprise_product_id” category=

“MUSIC”>

  <attribute name=“uiwritable” value=“true” />

</property>

</table>

3 这篇配置文件应该放置于/atg/commerce/catalog/customCatalog.xml

二:创建新的类型,这种类型是OOTB不存在的。

比如现在站点上需要创建一个GlobalHeader 之类的Banner.

1 创建一张表

CREATE TABLE MUSIC_BANNER (  

  ID VARCHAR2(40) NOT NULL  PRIMARY KEY,

  TITLE VARCHAR2(40 CHAR),

  LINK_URL VARCHAR2(256 CHAR),

  MEDIA_ID VARCHAR2(40),

  FOREIGN KEY (MEDIA_ID) REFERENCES DCS_MEDIA(MEDIA_ID)

);

2 创建定义文件

<item-descriptor name=“banner”
                 display-name=“Promotional Content”>

  <table name=“MUSIC_BANNER” type=“primary”
         id-column-name=“id”>

    <property name=“id” data-type=“string”

                    column-name=“ID”></property>

    <property name=“title” data-type=“string”
              column-name=“TITLE”></property>

    <property name=“linkURL” data-type=“string”
              column-name=“LINK_URL”></property>

    <property name=“media” item-type=“media-external”           
              column-name=“MEDIA_ID”></property>
  </table>

</item-descriptor>

3 再创建一张新的表去保存相关的banner 的集合。

CREATE TABLE PRJ_CATEGORY_BANNERS (

  CATEGORY_ID VARCHAR2(40 BYTE) NOT NULL ENABLE,

  BANNER_ID VARCHAR2(40 BYTE),

  SEQUENCE_NUM NUMBER NOT NULL ENABLE

);

4 再添加一个新的item 在定义文件中

<item-descriptor name="category">      

  <table name=“PRJ_CATEGORY_BANNERS" type="multi"
         multi-column-name=“SEQUENCE_NUM"
         id-column-name=“CATEGORY_ID">

    <property name=“banners" display-name=“Banners"
              data-type="list" column-name=“BANNER_ID"
              component-item-type=“bannerContent"/>

  </table>  

</item-descriptor>

 

三:针对已经存在的Item type 去创建他的子类型,即所谓的继承。

product item为例,他缺省有一个属性值叫做type。数据类型是枚举。他的作用主要是用来创建一些item的子类型。

<property name=“type” data-type=“enumerated”
   column-name=“product_type”

writable=“false”    hidden=“true”>

<option value=“product”/>

<option value=“electronicGiftCard”/>

</property>

创建一个数据库表,MUSIC_EGIFTCARD

CREATE TABLE MUSICA. MUSIC_EGIFTCARD(

PRODUCT_ID VARCHAR2(40) NOT NULL REFERENCES DCS_PRODUCT(PRODUCT_ID),

MIN_CARD_VALUE NUMBER(6,2) NOT NULL,

MAX_CARD_VALUE NUMBER(6,2) NOT NULL,

    PRIMARY KEY (PRODUCT_ID)

);

Repository 定义文件中添加一个新的item-descriptor

<item-descriptor name=“electronicGiftCard

   Super-type=“product”

//对应上面的option value

Sub-type-value=“electronicGiftCard” >

<table name=“MUSIC_EGIFTCARD” type=“auxiliary” id-column-name=“PRODUCT_ID”>

    <property name=“minCardValue”

data-type=“double”

             column-name=“MIN_CARD_VALUE”/>

<property name=“minCardValue”

data-type=“double”

             column-name=“MAX_CARD_VALUE”/>

</table>

</item-descriptor>

然后/atg/commerce/CatalogTools component需要被更新。

以前的OOTB的属性值:

catalogFolderItemTypes=catalogFolder

catalogItemTypes=catalog

productItemTypes=product

categoryItemTypes=category

SKUItemTypes=sku,configurableSku

然后添加新的productItemTypes

productItemTypes+=electronicGiftCard

你可能感兴趣的:(log)