A new custom field named domain is created in the commerce category record to select the multiple domains. We can update the domain field from the commerce category record.
Each commerce category will display only the selected domains in the commerce category record.
For example, here we have selected the domain Rent-A-Center® Shop Now in the SHOP NOW category and its subcategories, such as ACIMA & ANOW and RAC CLOTHING. All other commerce records will not be displayed in this domain.
This functionality is performed using the extension “domainInCategory.” In order to perform this functionality of displaying commerce categories on other selected domains, we have to activate this extension in that domain also.
JAVASCRIPT
define(
'JJ.domainInCategory.domainInCategory', [
'JJ.domainInCategory.domainInCategory.View',
'Header.Menu.View',
'SC.Configuration',
'Utils',
'jQuery',
'Facets.CategoryCell.View',
'Facets.FacetedNavigationItemCategory.View',
'Facets.Browse.View'
],
function (
domainInCategoryView,
HeaderMenu,
Configuration,
Utils,
jQuery,
FacetsCategoryCellView,
FacetsFacetedNavigationItemCategoryView,
FacetsBrowseView
) {
'use strict';
return {
mountToApp: function mountToApp(container) {
_.extend(FacetsBrowseView.prototype, {
getContext: _.wrap(FacetsBrowseView.prototype.getContext, function (fn) {
var originalRet = fn.apply(this, _.toArray(arguments).slice(1));
//console.log("originalRetxx", originalRet);
var environment = SC.ENVIRONMENT;
var baseurl = environment.shoppingDomain;
// console.log("bbbb2", baseurl);
//console.log("thisbbbb2", this);
//Access the listed domain in commercecategory record from backend
var url = Utils.getAbsoluteUrl(getExtensionAssetsPath("services/domainInCategory.Service.ss"))
$.get(url, {})
.done(function (data) {
console.log('data2', data);
//comparing the domains
for (var j = 0; j < data.length; j++) {
var length = data[j].custrecord_domain.length;
var hideCategory;
if (length == 0) {
//console.log("hideCategoryNOOOO1", data[j].name);
hideCategory = data[j].name;
} else if (!length) {
if (data[j].custrecord_domain.name != baseurl) {
//console.log("hideCategoryNOOOO2", data[j].name);
hideCategory = data[j].name;
}
} else if (length >= 1) {
var flag = 0;
for (var x = 0; x < length; x++) {
if (data[j].custrecord_domain[x].name === baseurl) {
flag = 1;
break;
}
}
if (flag == 0) {
//console.log("data[j].namenoooo", data[j].name);
hideCategory = data[j].name;
}
}
//hide commerce category on the basis of domain field
console.log("hideCategoryin facet2", hideCategory);
$('#facet-browse .facets-facet-browse .facets-faceted-navigation-item-category .facets-faceted-navigation-item-category-facet-group-content ul li a[title ="' + hideCategory + '"]').hide();
$('#facet-browse .facets-facet-browse .facets-category-cell a[name ="' + hideCategory + '"]').hide();
}
})
return originalRet;
})
});
//To hide commerce category from header menu
_.extend(HeaderMenu.prototype, {
getContext: _.wrap(HeaderMenu.prototype.getContext, function (fn) {
var originalRet = fn.apply(this, _.toArray(arguments).slice(1));
//const self = this;
console.log("aaaathis", this);
console.log("bbborgin", originalRet.categories);
var categoriess = originalRet.categories;
//Obtain the current domain
var environment = SC.ENVIRONMENT;
var baseurl = environment.shoppingDomain;
console.log("bbbb", baseurl);
//Access the listed domain in commercecategory record from backend
var url = Utils.getAbsoluteUrl(getExtensionAssetsPath("services/domainInCategory.Service.ss"))
$.get(url, {})
.done(function (data) {
console.log('data1', data);
//comparing the domains
for (var j = 0; j < data.length; j++) {
var length = data[j].custrecord_domain.length;
var hideCategory;
if (length == 0) {
console.log("hideCategoryNOOOO1", data[j].name);
hideCategory = data[j].name;
} else if (!length) {
if (data[j].custrecord_domain.name != baseurl) {
console.log("hideCategoryNOOOO2", data[j].name);
hideCategory = data[j].name;
}
} else if (length >= 1) {
var flag = 0;
for (var x = 0; x < length; x++) {
if (data[j].custrecord_domain[x].name === baseurl) {
flag = 1;
break;
}
}
if (flag == 0) {
console.log("data[j].namenoooo", data[j].name);
hideCategory = data[j].name;
}
}
//hide commerce category on the basis of domain field
console.log("hideCategory", hideCategory);
if (!!categoriess && !!hideCategory) {
for (var i = 0; i < categoriess.length; i++) {
if (hideCategory != categoriess[i].text) {
var secondLevelCategory = categoriess[i].categories;
if (!!secondLevelCategory) {
for (var k = 0; k < secondLevelCategory.length; k++) {
if (hideCategory != secondLevelCategory[k].text) {
var thirdLevelCategory = secondLevelCategory[k].categories;
if (!!thirdLevelCategory) {
for (var l = 0; l < thirdLevelCategory.length; l++) {
if (hideCategory == thirdLevelCategory[l].text) {
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav .header-menu-level3 li[name ="' + thirdLevelCategory[l].href + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav .header-menu-level3 li[name ="' + thirdLevelCategory[l].href + '"] ul li ul li a').parent().hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav .header-menu-level3 li[name ="' + thirdLevelCategory[l].href + '"] ul li ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + thirdLevelCategory[l].href + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + thirdLevelCategory[l].href + '"] ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + thirdLevelCategory[l].href + '"] ul li ul li a').hide();
console.log("thirdLevelCategory[l]", thirdLevelCategory[l].href)
//To remove from facet
$('#facet-browse .facets-facet-browse .facets-category-cell a[href ="' + thirdLevelCategory[l].href + '"]').hide();
$('#facet-browse .facets-facet-browse .facets-faceted-navigation-item-category .facets-faceted-navigation-item-category-facet-group-content ul li a[href ="' + thirdLevelCategory[l].href + '"]').hide();
}
}
}
} else {
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav .header-menu-level2 li[name ="' + secondLevelCategory[k].href + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav .header-menu-level2 li[name ="' + secondLevelCategory[k].href + '"] ul li ul li a').parent().hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav .header-menu-level2 li[name ="' + secondLevelCategory[k].href + '"] ul li ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + secondLevelCategory[k].href + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + secondLevelCategory[k].href + '"] ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + secondLevelCategory[k].href + '"] ul li ul li a').hide();
console.log("secondLevelCategory[k]", secondLevelCategory[k].href)
//To remove from facet
$('#facet-browse .facets-facet-browse .facets-category-cell a[href ="' + secondLevelCategory[k].href + '"]').hide();
$('#facet-browse .facets-facet-browse .facets-faceted-navigation-item-category .facets-faceted-navigation-item-category-facet-group-content ul li a[href ="' + secondLevelCategory[k].href + '"]').hide();
}
}
}
} else {
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="' + categoriess[i].href + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="' + categoriess[i].href + '"] ul li ul li a').parent().hide();
$('#site-header .header-secondary-wrapper .header-menu-secondary-nav ul li[name ="' + categoriess[i].href + '"] ul li ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + categoriess[i].href + '"] a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + categoriess[i].href + '"] ul li a').hide();
$('#site-header .header-secondary-wrapper .header-sidebar-wrapper .header-sidebar-menu-wrapper ul li[name ="' + categoriess[i].href + '"] ul li ul li a').hide();
//To remove from facet
$('#facet-browse .facets-facet-browse .facets-category-cell a[href ="' + categoriess[i].href + '"]').hide();
$('#facet-browse .facets-facet-browse .facets-faceted-navigation-item-category .facets-faceted-navigation-item-category-facet-group-content ul li a[href ="' + categoriess[i].href + '"]').hide();
console.log("categoriess[i].href", categoriess[i].href)
}
}
}
}
})
return originalRet;
})
});
}
};
});
SUITE SCRIPT
// JJ.domainInCategory.domainInCategory.js
// Load all your starter dependencies in backend for your extension here
// ----------------
define('JJ.domainInCategory.domainInCategory'
, [
'domainInCategory.ServiceController',
'SC.Model',
'SC.Models.Init',
'underscore'
]
, function (
domainInCategoryServiceController,
SCModel,
ModelsInit, _
)
{
'use strict';
return SCModel.extend({
getCategory: function (data) {
try {
var field = ModelsInit.customer.getFieldValues();
var productFeatures = [];
console.log('field', field)
var searchFilters = [
["catalog", "anyof", "1"]
];
var searchColumns = [
new nlobjSearchColumn("name"),
new nlobjSearchColumn("primaryparent"),
new nlobjSearchColumn("pagetitle"),
new nlobjSearchColumn("urlfragment"),
new nlobjSearchColumn("custrecord17"),
]
var commercecategorySearch = Application.getAllSearchResults('commercecategory',searchFilters, searchColumns) || {};
var result = JSON.stringify(commercecategorySearch);
console.error("ServiceController111",result);
result = JSON.parse(result);
console.error("ServiceController222",result);
if (result.length > 0) {
_.each(result, function(eachResult) {
var featuredata = {};
featuredata.custrecord_domain = (eachResult.columns && eachResult.columns.custrecord17) || '';
featuredata.name = (eachResult.columns && eachResult.columns.name) || '';
featuredata.urlfragment = (eachResult.columns && eachResult.columns.urlfragment) || '';
productFeatures.push(featuredata);
});
}
console.error("ServiceController333",productFeatures);
return productFeatures;
} catch (e) {
console.error('error at model', e);
}
},
})
});