RefinementMenu cartridges render the set of dimension value refinements that are available in the left-hand rail for the current record set. This set of refinement values is driven by the dimension values that are tagged to the records themselves.

In Oracle ATG Web Commerce, applications may incorporate multiple sites and multiple catalogs. This means that each ATG category in the Category dimension may have one or more sites or catalogs associated with it. For example, Category A may be associated with Sites X and Y but not Site Z. In this case, when a customer is browsing on Sites X and Y, Category A should be included in the list of refinement values but when the customer is browsing Site Z, it should not. The RefinementMenu cartridge that is included out of the box with Oracle Endeca Commerce does not take site and catalog associations into account when it calculates the refinement values for the Category dimension. For this reason, the DCS module provides an extension to the RefinementMenu handler that filters out Category dimension values that are inappropriate for the current site and catalog context.

The DCS module implements the atg.commerce.endeca.assembler.cartridge.handler.CategoryMenuHandler class, which is an extension of the com.endeca.infront.cartridge.RefinementMenuHandler class with an override for the process() method. The CategoryMenuHandler.process() method makes an initial call to the RefinementMenuHandler.process() method to get the refinement values for the current record set as they would normally be returned by the Assembler. The CategoryMenuHandler.process() method then filters the refinement values to remove any values that are not appropriate for the current site and catalog context. To do the filtering, the process() method invokes the /atg/endeca/assembler/cartridge/manager/filter/SiteFilterBuilder and /atg/endeca/assembler/cartridge/manager/filter/CatalogFilterBuilder components, which are of class atg.endeca.assembler.navigation.filter.SiteFilterBuilder and atg.commerce.endeca.assembler.navigation.filter.CatalogFilterBuilder, respectively. These components calculate the set of sites and catalogs that are specified for the current request. Only those refinement values that have an association with these sites and catalogs are returned.

To do its tasks, the /atg/endeca/assembler/cartridge/handler/RefinementMenu component defines the following properties in the DCS module:

Note about the More Link

It is important to note that the Category dimension value filtering described in this section occurs after the MDEX has returned the dimension values and, possibly, a More link if one has been configured for the cartridge. This creates the potential for a situation where the all the returned dimension values are filtered out and only the More link gets rendered. Additionally, the More link itself may or may not be usable, depending on whether the dimension values that were identified as “More” dimension values are also filtered out. For this reason, it is important to consider whether or not configuring a More link is appropriate if you are using the extended version of the RefinementMenu cartridge to render the Category dimension values. Configuring a More link is safe if your application does not use multisite and has a single catalog for all shoppers. Also, if you use multisite but have a separate MDEX for each site, the More link is safe as long as all of the records in each MDEX come from the same catalog.

Note that Commerce Reference Store, which uses a single MDEX to support multiple sites, does not configure a More link for its Category dimension because of the potential for filtering issues.

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