首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Plone中重写搜索结果排序顺序

如何在Plone中重写搜索结果排序顺序
EN

Stack Overflow用户
提问于 2013-04-04 23:21:58
回答 1查看 1K关注 0票数 7

Plone搜索功能在plone.app.search包中实现;请求中包含的sort_on变量用于控制搜索模板上结果的排序顺序。

默认情况下,当此变量没有值时,Plone使用相关性作为排序顺序。

将此更改为date (最新的)的最简单方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-05 12:28:19

您需要自定义搜索视图以设置新的排序选项,并在未设置排序时更改默认排序。

如果仍然需要能够按相关性进行排序,请使用一个非空值,然后在filter_query方法中更改该值:

代码语言:javascript
复制
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'),
        )

然后将此视图注册到您的站点;如果您使用的是最简单的主题层:

代码语言:javascript
复制
<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包中复制plone.app.searchupdated_search.pt模板。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15823413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档