plone - 如何将关键字添加到 SearchableText 以获取 Dexterity 内容类型?

标签 plone dexterity

我有一个运行 Plone 4.1 的站点,它具有使用 Dexterity 1.1 开发的自定义内容类型。我的内容作者可以使用“分类”选项卡将关键字添加到基本的 Plone 页面,如果用户使用其中一个关键字进行搜索,他们将成功找到这些页面。

我的内容作者还使用我开发的 Dexterity 自定义内容类型制作了页面。这是使用基于 Python 的文件系统架构定义的。如果用户在 Dexterity 内容类型的标题和描述中搜索术语,他们会在搜索结果中返回 Dexterity 页面。如果他们在关键字字段中使用查询词进行搜索,则不会得到任何结果。但是,在高级搜索表单下,如果他们突出显示标签列表中的适当标签,他们可以找到敏捷页面。

我已经使用 ZMI 中的 portal_catalog 工具检查了搜索索引的内容。似乎关键字被添加到 SearchableText 字段,用于基本内容类型,例如 Page,但对于我的基于灵巧的自定义内容类型,它们没有。

我是否需要编写额外的代码来将关键字字段的内容插入到 SearchableText 索引中?

最佳答案

假设您的 Dexterity 内容类型实现了 IFoo,并且您的架构中定义的关键字属性是一个字符串列表。

您以这种方式定义索引器:

from five import grok
from plone.indexer.decorator import indexer
from my.dexteritycontent.foo import IFoo

@indexer(IFoo)
def searchableIndexer(context):
    keywords = " ".join(context.keywords)
    return "%s %s %s" % (context.title, context.description, keywords)

grok.global_adapter(searchableIndexer, name="SearchableText")

关于plone - 如何将关键字添加到 SearchableText 以获取 Dexterity 内容类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8852132/

相关文章:

python - Plon/Python 创建用户帐户

grails - 有没有类似 Plone 的 CMS,但是是在 Grails 中?

plone - 在 Dexterity 上的字段集之间移动字段

plone - 使用 Collective.dexteritytextindexer 扩展 SearchableText

pdf - 从 Plone 内容类型生成 PDF

css - 如何在 plone + Zope 站点上快速加载/卸载 css 更改? (小白)

xpath - Collective.xdv 中的 local-name() 支持

plone - 打印/全屏/电子邮件图标

plone - 限制灵巧文档的内容类型

plone - 如何添加条件以使敏捷类型可添加?