A configurable SKU holds other SKUs, in a different way than linked SKUs do. An example of a configurable item is a computer; customers can order them with varying amounts of memory, hard drive types, video cards, etc. Configurable items consist of a “base SKU” and a number of optional subSKUs for the user to choose among.

The following repository items are used when working with configurable SKUs:

Item

Description

configurableSku

Base SKU for the product, to which other products can be added as options, such as a computer.

configurableProperty

A category of sub-SKUs, such as Memory or Modems. The configurableProperty holds the list of configurationOptions.

configurationOption

The SKU representing the actual product option, such as a particular model of hard drive.

foreignCatalog

An external system with which Core Commerce communicates.

Configurable SKUs can also be used when working with a third party configuration system. For additional information on configurable SKUs and commerce items, refer to the Creating a Configurable Commerce Item section. For information on working with configurable SKUs and third party configuration systems, refer to the Implementing External Configurators with Core Commerce section.

Merging Configurable SKUs

Configured SKUs cannot be merged with other commerce items in the order. These methods of the CommerceItemManager provide the following functions:

Method

Description

shouldMergeItems

Prevents the merging of any ConfigurableCommerceItems if the existing item implements CommerceItemContainer

shouldMergeItemContainers

Determines if the CommerceItemContainers will be merged. You can override this method to provide additional merging logic.

shouldMergeSubItems

Compares the configurableProperty and ConfigurationOption properties and the method.

For additional information on these CommerceItemManager methods, refer to the ATG Platform API Reference.

Excluding SubSKUs from the Search Index

When a SKU can be purchased only as part of a configurable SKU, you should exclude the subSKU from the index.

Any SKU that belongs to categories whose comma separated IDs are mentioned within the /atg/commerce/search/ProductCatalogOutputConfig.excludedItemsAncestorIds will not be included in the search index. Note that to exclude a category that is several categories deep, you must name all of the parent categories up to (but not including) the root category. For further information on the excludedItemsAncestorIds property, refer to the Platform-Guided Search Integration Guide.

Alternatively, you could use the /atg/commerce/search/IndexedItemsGroup.rules. The rules define what will be included in the index. They can also be configured to exclude things from the index. For example, if all the subSKUs are included in the same non-indexed category, then a rule like the following could be used to exclude that whole category from the index. Note that rules can be defined without the use of categories.

For detailed information on creating rules, refer to the Personalization Programming Guide. For additional information on the IndexedItemsGroup.rules, refer to the ATG Platform API Reference.

The following is an example of excluding a category form the index based upon display names:

rules=\
<ruleset>\
  <accepts>\
    <rule op="includesItem">\
      <valueof target="ancestorCategories">\
      <rule op=neq>\
        <valueof target="displayName">\
        <valueof constant="NonIdexableCategory">\
      </rule>\
    <\rule>\
  </accepts>\
<\ruleset>

Copyright © 1997, 2016 Oracle and/or its affiliates. All rights reserved. Legal Notices