我修改了我的代码以添加新的solr排序价格。
INSERT_UPDATE FieldSolrSort;sort(indexedType(identifier),code)[unique=true];fieldName[unique=true];descending[unique=true];$IndexedType:price;priceValue;true
我目前有两个solr sort
我为价格添加了新的solr排序
但我希望我的新solr排序只显示用户何时登录。有人知道吗?感谢
答案 0 :(得分:1)
如果您推荐任何OOTB商店(apparelstore
),您可以在Impex中看到价格排序(price-asc
)选项。我在下面突出显示了Impex。
如果匿名用户将JSTL条件置于JSP / TAG文件中,则不要对价格进行排序。如下。您也可以对其进行服务器端验证。
注意:下面的代码仅供参考,我还没有对其进行测试
orderFormPagination.tag
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags"%>
<c:set var="isLoggedInUser" value="false" />
<sec:authorize ifNotGranted="ROLE_ANONYMOUS">
<c:set var="isLoggedInUser" value="true" />
</sec:authorize>
<select id="sortOptions${top ? '1' : '2'}" name="sort" class="form-control">
<option disabled><spring:theme
code="${themeMsgKey}.sortTitle" /></option>
<c:forEach items="${searchPageData.sorts}" var="sort">
<c:if test="${isLoggedInUser || (!isLoggedInUser && !fn:startsWith(sort.code, 'price'))}">
<option value="${sort.code}"
${sort.selected? 'selected="selected"' : ''}>
<c:choose>
<c:when test="${not empty sort.name}">
${sort.name}
</c:when>
<c:otherwise>
<spring:theme code="${themeMsgKey}.sort.${sort.code}" />
</c:otherwise>
</c:choose>
</option>
</c:if>
</c:forEach>
</select>
定义SolrIndexedProperty
INSERT_UPDATE SolrIndexedProperty ; solrIndexedType(identifier)[unique=true] ; name[unique=true] ; type(code) ; sortableType(code) ; currency[default=false] ; localized[default=false] ; multiValue[default=false] ; useForSpellchecking[default=false] ; useForAutocomplete[default=false] ; fieldValueProvider ; ftsPhraseQuery[default=false] ; ftsPhraseQueryBoost ; ftsQuery[default=false] ; ftsQueryBoost ; ftsFuzzyQuery[default=false] ; ftsFuzzyQueryBoost ; ftsWildcardQuery[default=false] ; ftsWildcardQueryType(code)[default=POSTFIX] ; ftsWildcardQueryBoost ; ftsWildcardQueryMinTermLength
; $solrIndexedType ; name ; text ; sortabletext ; ; true ; ; true ; true ; ; true ; 100 ; true ; 50 ; true ; 25 ; ; ; ;
; $solrIndexedType ; priceValue ; double ; ; true ; ; ; ; ; productPriceValueProvider ; ; ; ; ; ; ; ; ; ;
定义可用的排序
INSERT_UPDATE SolrSort ; &sortRefID ; indexedType(identifier)[unique=true] ; code[unique=true] ; useBoost
; sortRef3 ; $solrIndexedType ; name-asc ; false
; sortRef4 ; $solrIndexedType ; name-desc ; false
; sortRef5 ; $solrIndexedType ; price-asc ; false
; sortRef6 ; $solrIndexedType ; price-desc ; false
定义排序字段
INSERT_UPDATE SolrSortField ; sort(indexedType(identifier),code)[unique=true] ; fieldName[unique=true] ; ascending[unique=true]
; $solrIndexedType:name-asc ; name ; true
; $solrIndexedType:name-desc ; name ; false
; $solrIndexedType:price-asc ; priceValue ; true
; $solrIndexedType:price-desc ; priceValue ; false
在索引类型产品
中更新排序选项INSERT_UPDATE SolrIndexedType ; identifier[unique=true] ; type(code) ; variant ; sorts(&sortRefID)
; $solrIndexedType ; Product ; false ; sortRef3,sortRef4,sortRef5,sortRef6