Promotion Refinement Code Changes

The following two files require necessary changes to display promotion refinements.

  1. cartridge/scripts/models/SearchModel.js
    SearchModel.initializeProductSearchModel = function (httpParameterMap) {
        var productSearchModel = this.initializeSearchModel(new ProductSearchModel(), httpParameterMap);
     
        productSearchModel.setRecursiveCategorySearch(true);
     
        if (httpParameterMap.pid.submitted) {
            productSearchModel.setProductID(httpParameterMap.pid.value);
        }
     
        if (httpParameterMap.pmin.submitted) {
            productSearchModel.setPriceMin(httpParameterMap.pmin.doubleValue);
        }
     
        if (httpParameterMap.pmax.submitted) {
            productSearchModel.setPriceMax(httpParameterMap.pmax.doubleValue);
        }
         
        // NEW CODE FOR PROMOTION REFINEMENT - START!!!!
        if (httpParameterMap.pmid.submitted) {
            productSearchModel.setPromotionID(httpParameterMap.pmid);
        }
        // NEW CODE FOR PROMOTION REFINEMENT - END!!!!
     
        var sortingRule = httpParameterMap.srule.submitted ? CatalogMgr.getSortingRule(httpParameterMap.srule.value) : null;
        if (sortingRule) {
            productSearchModel.setSortingRule(sortingRule);
        }
     
        // only add category to search model if the category is online
        if (httpParameterMap.cgid.submitted) {
            var category = CatalogMgr.getCategory(httpParameterMap.cgid.value);
            if (category && category.isOnline() && productSearchModel) {
                productSearchModel.setCategoryID(category.getID());
            }
     
        }
     
        return productSearchModel;
  2. cartridge/templates/default/search/components/productsearchrefinebar.isml
    Note:

    The change must be added along side an existing refinement.

    <div class="refinement-promotion">
            <iscomment>PROMOTION REFINEMENTS (NEW)</iscomment>
            <isif condition="${RefinementDefinition.isPromotionRefinement()}">
    
                <h3 class="toggle">
                    <i class="fa fa-chevron-circle-down"></i>
                    <isprint value="${RefinementDefinition.getDisplayName()}"/>
                </h3>
    
    
                <isif condition="${pdict.ProductSearchResult.isRefinedByPromotion()}">
                    <div class="clear-refinement">
                        <a title="${Resource.msg('search.productsearchrefinebar.showallopt','search',null)}" href="${pdict.ProductSearchResult.urlRelaxPromotion('Search-Show')}">${Resource.msg('searchrefinebar.clearselection','search',null)}</a>
                    </div>
                </isif>
    
                <ul <isif condition="${Refinements.getAllRefinementValues(RefinementDefinition).size() > RefinementDefinition.cutoffThreshold}">class="scrollable"</isif>>
                <isloop items="${Refinements.getAllRefinementValues(RefinementDefinition)}" var="RefinementValue">
                    <isif condition="${pdict.ProductSearchResult.isRefinedByPromotion(RefinementValue.value)}">
                        <li class="selected">
                            <a class="refinement-link" href="${StringHelpers.unsanitizeOR(pdict.ProductSearchResult.urlRelaxPromotion('Search-Show'))}" title="${Resource.msg('search.productsearchrefinebar.clickrefine','search',null)}${RefinementValue.getDisplayValue()}">
                                <i class="fa fa-check-square-o fa-lg"></i>
                                <isprint value="${RefinementValue.getDisplayValue()}" encoding="off"/> (<isprint value="${RefinementValue.getHitCount()}" encoding="off"/>)
                            </a>
                        </li>
                    <iselse/>
                        <li>
                            <a class="refinement-link" href="${StringHelpers.unsanitizeOR(pdict.ProductSearchResult.urlRefinePromotion('Search-Show',RefinementValue.getValue()))}" title="${Resource.msg('search.productsearchrefinebar.clickrefine','search',null)}${RefinementValue.getDisplayValue()}">
                                <i class="fa fa-square-o fa-lg"></i>
                                <isprint value="${RefinementValue.getDisplayValue()}" encoding="off"/> (<isprint value="${RefinementValue.getHitCount()}" encoding="off"/>)
                            </a>
                        </li>
                    </isif>
                </isloop>
                </ul>
            </isif>
            </div>
X Privacy Update: We use cookies to make interactions with our websites and services easy and meaningful, to better understand how they are used. By continuing to use this site you are giving us your consent to do this. Privacy Policy.