如何在Hybris中隐藏特定页面的排序选项

时间:2019-07-31 06:56:17

标签: sorting solr hide hybris

我有3个SolrSorts:

  1. 相关性
  2. A-Z
  3. Z-A

在搜索页面上,应该有3种可用的全部。但是在类别页面上,只有A-Z和Z-A。那么如何隐藏类别页面上的相关性排序?

我已经覆盖了 DefaultSolrProductSearchService 类,但是没有什么可以帮助我的。 我认为spring.xml中应该有类似的配置?

1 个答案:

答案 0 :(得分:0)

如果您想从后端进行此配置,以便明天您可以从HMC /后台隐藏特定页面的另一个字段,那么您需要从模型到后端再到前端进行大量更改。但是,如果您只是简单地对此要求进行硬编码,则可以在前端轻松地解决此问题。这样...

  1. 修改 searchresultsgridcomponent.jsp ,以将其他标志传递给pagination.tag。这有助于我们识别搜索页面与类别页面。

请注意,您可以在该文件中找到两个 nav:pagination 的引用,请同时用isSearchPage="${true}"进行修改。

<nav:pagination top="true"  supportShowPaged="${isShowPageAllowed}" supportShowAll="${isShowAllAllowed}"  searchPageData="${searchPageData}" searchUrl="${searchPageData.currentQuery.url}"  numberPagesShown="${numberPagesShown}" isSearchPage="${true}"/>
  1. searchresultslistcomponentcomponent.jsp

  2. 重复上述步骤
  3. 在pagination.tag中,取消使用isSearchPage属性,并在此标志的帮助下处理呈现登录的sort选项。

类似这样的东西

<%@ attribute name="isSearchPage" required="false" type="java.lang.Boolean" %>
<c:set var="isSeachPg" value="${empty isSearchPage ? false : isSearchPage}"/>

我们只允许与搜索页面相关。

<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="${isSeachPg || (not isSeachPg && fn:escapeXml(sort.code) != 'relevance')}">
            <option value="${fn:escapeXml(sort.code)}" ${sort.selected? 'selected="selected"' : ''}>
                <c:choose>
                    <c:when test="${not empty sort.name}">
                        ${fn:escapeXml(sort.name)}
                    </c:when>
                    <c:otherwise>
                        <spring:theme code="${themeMsgKey}.sort.${sort.code}"/>
                    </c:otherwise>
                </c:choose>
            </option>
        </c:if>
    </c:forEach>
</select>