Вам нужно будет настроить вид поиска, чтобы установить новые параметры сортировки, и изменить сортировку по умолчанию, если сортировка не задана.
Если вам все еще нужно, чтобы иметь возможность сортировать по релевантности, используйте непустое значение, которое вы затем изменить в filter_query
метода:
from plone.app.search.browser import _, Search, SortOption
class MyCustomSearch(Search):
def filter_query(self, query):
query = super(MyCustomSearch, self).filter_query(query)
if 'sort_on' not in query:
# explicitly set a sort; if no `sort_on` is present, the catalog sorts by relevance
query['sort_on'] = 'EffectiveDate'
query['sort_order'] = 'reverse'
elif query['sort_on'] == 'relevance':
del query['sort_on']
return query
def sort_options(self):
""" Sorting options for search results view. """
return (
SortOption(self.request, _(u'date (newest first'),
'EffectiveDate', reverse=True
),
SortOption(self.request, _(u'relevance'), 'relevance'),
SortOption(self.request, _(u'alphabetically'), 'sortable_title'),
)
Затем зарегистрировать этот вид на ваш сайт; если вы используете тему слой, который был бы самым простым:
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
i18n_domain="plone">
<browser:page
name="search"
layer=".interfaces.IYourCustomThemeLayer"
class=".yourmodule.MyCustomSearch"
permission="zope2.View"
for="*"
template="search.pt"
/>
<browser:page
name="updated_search"
layer=".interfaces.IYourCustomThemeLayer"
class=".yourmodule.MyCustomSearch"
permission="zope2.View"
for="Products.CMFCore.interfaces.IFolderish"
template="updated_search.pt"
/>
</configure>
Вам нужно скопировать над search.pt
и updated_search.pt
шаблонов из plone.app.search
пакета.
спасибо! Я исправил ваше решение, чтобы отразить окончательный рабочий код, но я не вижу изменений. – hvelarde
@hvelarde: ваше предложенное редактирование было немного радикальным для рецензентов; Я обновил свою версию с вашей. –
Кто эти обозреватели? люди ничего не знают о Plone, и они чувствуют, что могут просматривать редактирование? благодаря! – hvelarde