Как скрыть параметр сортировки для определенной страницы в Hybris

У меня есть 3 SolrSorts:

  1. актуальность
  2. A-Z
  3. Z-A

На странице поиска должны быть доступны все 3 вида. Но на странице категории только А-Я и Я-А. Итак, как я могу скрыть сортировку по релевантности на странице категории?

Я переопределил класс DefaultSolrProductSearchService, но ничто не могло мне помочь. Я думаю, должно быть что-то вроде конфигурации в spring.xml?


person Jevgenij Huebert-Weizenegger    schedule 31.07.2019    source источник


Ответы (1)


Если вы хотите сделать это настраиваемым из бэкэнда, чтобы завтра вы могли скрыть другое поле для конкретной страницы из 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. Повторите описанный выше шаг для searchresultslistcomponent.jsp.

  2. В pagination.tag удалите атрибут isSearchPage и обработайте параметр сортировки, отображающий логин с помощью этого флага.

Что-то вроде этого

<%@ 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>
person HybrisHelp    schedule 31.07.2019