Change response filters used by out-of-the-box widgets
If you want to change the response filter used in one of the default widgets (described in Out-of-the-box response filters), Oracle recommends that you create a new response filter and assign it to the endpoint/identifier combination the widget uses in its context object.
To do this, you create an application-level JavaScript module that requires in the CCStoreConfiguration library and creates a modified version of the filter map. As a reminder, the default filter map looks like this:
define(
//-------------------------------------------------------------------
// DEPENDENCIES
//-------------------------------------------------------------------
['ccStoreConfiguration'],
//-------------------------------------------------------------------
// Module definition
//-------------------------------------------------------------------
function(CCStoreConfiguration) {
'use strict';
return {
onLoad : function() {
console.log("Loading Application Level JS");
var filterMap = {
"getCollection":{
"megaMenuNavigation": {"ccFilterConfigKey": "categoryNavData"},
"categoryNavigation": {"ccFilterConfigKey": "categoryNavData"}
},
"listProducts":{
"productListingData": {"ccFilterConfigKey": "PLPData"},
"collectionWidget": {"ccFilterConfigKey": "collectionData"},
"getProductData": {"ccFilterConfigKey": "productData"},
"getProductDataAndRedirect": {"ccFilterConfigKey": "productData"},
}
};
CCStoreConfiguration.getInstance().updateFiltersToUse(newFilterMap);
},
}
}
);The code in this example changes the response filter key for the Collection Navigation
widget from categoryNavData to customFilterKey1.
define(
//-------------------------------------------------------------------
// DEPENDENCIES
//-------------------------------------------------------------------
['ccStoreConfiguration'],
//-------------------------------------------------------------------
// Module definition
//-------------------------------------------------------------------
function(CCStoreConfiguration) {
'use strict';
return {
onLoad : function() {
console.log("Loading Application Level JS");
var filterMap = {
"getCollection":{
"megaMenuNavigation": {"ccFilterConfigKey": "customFilterKey1"},
"categoryNavigation": {"ccFilterConfigKey": "categoryNavData"}
},
"listProducts":{
"productListingData": {"ccFilterConfigKey": "PLPData"},
"collectionWidget": {"ccFilterConfigKey": "collectionData"},
"getProductData": {"ccFilterConfigKey": "productData"},
"getProductDataAndRedirect": {"ccFilterConfigKey": "productData"},
}
};
CCStoreConfiguration.getInstance().updateFiltersToUse(newFilterMap);
},
}
}
);Remember that the top-level objects you define in the filter map override any default top-level objects. In other words, if you modify a top-level object in the filter map, only the identifiers you explicitly include your top-level object are used by the CCStoreConfiguration library. For this reason, you should be careful to include the default identifiers in top-level objects to avoid overwriting them. See Add a new response filter key to the out-of the-box filter map for more information.
The following table defines which identifier and filter key combination is used by the default widgets:
| Widget | Endpoint | Identifier | Response filter Key |
|---|---|---|---|
| Collection Navigation | getCollection | megaMenuNavigation | categoryNavData |
| Collection Navigation – Basic | getCollection | categoryNavigation | categoryNavData |
| Product Listing | listProducts | productListingData | PLPData |
| Collection | listProducts | collectionWidget | collectionData |