If you want to change the response filter used in one of the out-of-the-box 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 out-of-the-box 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 out-of-the-box 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 out-of-the-box 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 out-of-the-box widgets:
Widget | Endpoint | Identifier | Response filter Key |
---|---|---|---|
Collection Navigation |
|
|
|
Collection Navigation – Basic |
|
|
|
Product Listing |
|
|
|
Collection |
|
|
|