Plone:portal_catalog的通用搜索表单

时间:2016-08-18 16:15:08

标签: plone-4.x

我有一些基于Archetypes内容的Plone网站。

我注意到,香草portal_catalog搜索表单(manage_catalogView)允许按语言portal_type(一个!)和仅路径进行过滤 - 因为它们始终可用。

因此,每当我需要通过任何其他标准进行快速搜索时,这涉及编程,例如,写一个扔掉Script (Python)

是否有一些扩展提供了通用搜索表单,提供了所有已配置的搜索索引? E.g:

  • 搜索ID
  • 搜索Creator
  • 搜索创建时间(两个字段,minmax;其中一个或两者都可以使用)
  • 审核状态(使用可选择的不同值)
  • ...

1 个答案:

答案 0 :(得分:0)

也许我错过了您的问题,但您不需要外部方法来进行目录搜索或自定义扩展。 您可以使用python脚本对象并从url中直接调用它。

转到ZMI根目录,使用右上角的选择字段添加脚本(python)。提供ID并删除示例内容。

使用您在http://docs.plone.org/develop/plone/searching_and_indexing/query.html

中找到的queryCatalog或searchCatalog的示例

并使用TEST选项卡或表单URL调用您的脚本。

示例:

在ZMI根文件夹中,我创建了一个名为my_test

的python脚本
catalog = context.portal_catalog
from DateTime import DateTime

# DateTime deltas are days as floating points
end = DateTime() + 0.1 
start = DateTime() - 1
date_range_query = { 'query':(start,end), 'range': 'min:max'}

query = {'id': ['id_1', 'id_2'],
         'Creator': ['creator1', 'creator2'],
         'created': date_range_query,
         'review_state': ['published', 'pending']}

results = catalog.queryCatalog(query)

for brain in results:
    print brain.pretty_title_or_id()

return printed

最后,如果你在python脚本中设置一些参数,你也可以通过URL或TEST选项卡传递它们。

希望它可以帮到你