Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plone 使用collective.dextertyTextIndexer扩展SearchableText_Plone_Dexterity - Fatal编程技术网

Plone 使用collective.dextertyTextIndexer扩展SearchableText

Plone 使用collective.dextertyTextIndexer扩展SearchableText,plone,dexterity,Plone,Dexterity,我正在尝试为我的内容类型扩展SearchableText索引。 通过在模型文件中将多个字段标记为indexer:searchable=“true”,我成功地获得了要包含的多个字段。 但是,我无法从类型的py扩展SearchableText,如下所示: class IMyBehavior(form.Schema): dexteritytextindexer.searchable('description') description = schema.Text(title=u'Pr

我正在尝试为我的内容类型扩展SearchableText索引。 通过在模型文件中将多个字段标记为indexer:searchable=“true”,我成功地获得了要包含的多个字段。 但是,我无法从类型的py扩展SearchableText,如下所示:

class IMyBehavior(form.Schema):

    dexteritytextindexer.searchable('description')
    description = schema.Text(title=u'Precis')

alsoProvides(IMyBehavior, IFormFieldProvider)


class MySearchableTextExtender(object):
    adapts(IMyBehavior)
    implements(dexteritytextindexer.IDynamicTextIndexExtender)

    def __init__(self, context):
        self.context = context

    def __call__(self):
        """Extend the searchable text with a custom string"""
        return 'some more searchable words'
我得承认,我真的不知道头等舱是怎么开的。我是否必须设置这个类中的可搜索字段才能扩展第二个类中的可搜索文本? 如果我从模型中删除所有indexer:searchable=“true”,那么SearchableText就是空的


第一个类是否同时尝试注册架构?如果是这样的话,如果只是扩展可搜索文本,它应该是什么样子?

集合.DextertityTextIndexer提供了两个重要功能:

  • 正如您已经实现的,
    dexteritytextindexer
    使您能够将
    放入Plone的
    可搜索文本
    索引中。通过向表单中添加
    dexteritytextindexer.searchable(FIELDNAME)
    ,该字段的值将显示在
    SearchableText
    中。在原型中,通过将
    searchable=True
    添加到字段定义中,您具有相同的功能

  • collective.dexteritytextindexer
    还提供了通过注册
    idynamictdexextender
    适配器手动扩展可搜索文本的功能。它使用适配器中的值扩展
    第1部分中的值

  • 我想您的问题是,您没有注册适配器:

    例如:

    向zcml注册适配器:

    最重要的部分是测试实现:

    根据您的ftw示例,我添加了一个interfaces.py,其中IMyBehavior(?)的接口为空,但我不确定“import”是什么意思,并且在它上面找不到任何文档。在ftw.simplelayout exmaple中,ISimplelayout接口是一个标记行为(请参见)“\u”下划线是一个消息工厂。在plone中,将其声明为下划线是很常见的。您是否向zcml注册了适配器?它真的进入了适配器(pdb)吗?为什么要添加interfaces.py,您已经有了
    IMyBehavior
    ??请发布您的完整代码,如果它不起作用。它现在起作用了,谢谢。最后一个难题是启用行为。默认情况下是否可以启用该行为?