一:Catalog
Catalog 是由相关的Repository Item 组成的。它形成或者组织用户进行定位或者购买的导航性质的架构。
我们也可以理解为它是一颗树的root(catalog).它可以包含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