Display Commerce category on the webstore according to the value of custom domain field

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);
            }
        },
    })
	
});

Leave a comment

Your email address will not be published. Required fields are marked *