Plone 索引特定类型,不包含其包含的类型
我为我的内容类型添加了一个字段索引 在ZMI中,我可以在Plone 索引特定类型,不包含其包含的类型,plone,archetypes,Plone,Archetypes,我为我的内容类型添加了一个字段索引 在ZMI中,我可以在/mysite/portal\u catalog/Indexes/Building中看到索引项。我的内容类型(提供IMyType,有一个字段building)是folderish,包含一张照片(提供IPhoto,没有building字段),作为profiles/default/types/MyType.xml文件中允许的内容类型 我只想为MyType的building字段建立索引。然而,照片类型的项目似乎用其父项的值进行索引。真烦人。代码@
/mysite/portal\u catalog/Indexes/Building
中看到索引项。我的内容类型(提供IMyType
,有一个字段building
)是folderish,包含一张照片(提供IPhoto
,没有building
字段),作为profiles/default/types/MyType.xml
文件中允许的内容类型
我只想为MyType的building字段建立索引。然而,照片类型的项目似乎用其父项的值进行索引。真烦人。代码
@indexer(IMyType)
是否表示对IMyType及其包含的类型进行索引?如何仅为IMyType编制索引?这就是采集的工作方式
下面介绍如何解决此问题:
“使用执行aq_显式检查的自定义索引器。”索引器所做的是直接从被索引的对象获取属性。在作为特殊包装器的Plone中,将使用注册索引器(使用
@indexer
decorator创建)的包装器(如果存在)
但是,如果您恰好索引了建筑
,并且这也是IMyType
对象上的一个属性,则任何包含的对象也将通过获取具有该属性。为IMyType
注册索引器不会阻止此操作
有几种方法可以解决这个问题:
构建
注册值from zope.interface import Interface
@indexer(Interface)
def catchall_ignore(ob, **kw):
# Raising AttributeError means: do not index anything
raise AttributeError