Plone 基于特定字段计算描述
我的自定义灵巧度类型如下所示:Plone 基于特定字段计算描述,plone,dexterity,Plone,Dexterity,我的自定义灵巧度类型如下所示: class IMyType(form.Schema): title = schema.TextLine( title=_(u"Title"), ) address = schema.TextLine( title=_(u"Address"), required=False, ) class MyType(dexterity.Container): grok.implement
class IMyType(form.Schema):
title = schema.TextLine(
title=_(u"Title"),
)
address = schema.TextLine(
title=_(u"Address"),
required=False,
)
class MyType(dexterity.Container):
grok.implements(IMyType)
我希望实时搜索结果如下所示,列出其标题和地址值的前3个字符(如果存在):
Item One
Address[:3]
Item Two
Address[:3]
默认情况下,匹配的每个项目都将显示其标题和说明。因此,一种解决方案是从地址字段计算描述字段。但我不知道怎么做。任何提示或更好的建议?您可以使用plone.indexer覆盖特定类型的描述索引。 这样,目录就有了正确的信息,您不必自定义搜索结果
从plone.indexer导入索引器
@索引器(IMyType)
def自定义_说明(obj,**kw):
返回对象描述[:3]
登记册
引用:
重要的是要了解,当搜索目录时,它返回的是结果对象列表,而不是目录对象本身,因此如果要在搜索结果中使用对象属性的值,该属性必须在此列表中
因此,在将字段名添加到元数据索引后,您可以自定义livesearch\u reply,为了实现您想要的,请在第52行(Products.CMFPlone-4.3)后面插入设置了“display\u description”的内容,如下所示:
if result.portal_type == 'yourtype':
display_description = safe_unicode(result.address)
嗨,玛尔,其中一个答案可以帮助你/你需要更多信息吗?这些答案非常感谢,非常有帮助。在我的情况下,我可能需要他们两个。我会找时间试用的。我想这取决于你的用例。如果您希望地址的总体/全局行为与描述类似:请选择mat的建议。尽管这是假设,但您根本不需要contype的描述,然后您仍然可以使用desc字段作为地址输入。如果您只需要在livesearch结果中使用它,请使用定制livesearch_reply.Nice。你的评论应该得到最好的答案。:D对这两个答案进行外交上的“划分”是多么甜蜜,很高兴你现在拥有了你需要的所有信息!