The following two files require necessary changes to display promotion refinements.
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;
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>