Plone 如何将is_folderish属性添加到灵巧对象?

Plone 如何将is_folderish属性添加到灵巧对象?,plone,dexterity,Plone,Dexterity,.is\u folderish属性在许多地方都使用。例如何时或何时 我的第一个问题是如何检查对象是否具有该属性集。我尝试使用bin/instance debug进行如下操作: app.site.news.is\u folderish ... 属性错误:是folderish吗 我想我无法通过这种方式访问属性,因为app.site.news是具有该属性的对象的包装器 我的第二个问题是如何将该属性添加到新的灵巧对象。我想我可以使用下面的代码来完成它(但在我的第一个问题解决之前,我无法测试它) 从zo

.is\u folderish
属性在许多地方都使用。例如何时或何时

我的第一个问题是如何检查对象是否具有该属性集。我尝试使用
bin/instance debug
进行如下操作:

app.site.news.is\u folderish ... 属性错误:是folderish吗 我想我无法通过这种方式访问属性,因为
app.site.news
是具有该属性的对象的包装器

我的第二个问题是如何将该属性添加到新的灵巧对象。我想我可以使用下面的代码来完成它(但在我的第一个问题解决之前,我无法测试它)

从zope导入模式
从plone.dexterity.content导入项
类IHorse(form.Schema):
...
等级马(项目):
定义初始化(自):
超级(马,自我).\uuuu初始(id)
是_folderish=False吗

但我不确定如何将这两个类链接起来。

您不需要将
is\u folderish
添加到您的类型中;它是目录中的索引,并且敏捷类型已经具有该索引的适当属性,
isPrincipiaFolderish

如果确实需要向内容类型添加属性,则可以使用事件订阅服务器或创建
plone.dexterity.content.Item的自定义子类

  • 可以侦听
    IObjectCreatedEvent
    事件:

    从zope.app.container.interfaces导入IObjectAddedEvent
    @grok.subscribe(IYourDexterityType,IObjectCreatedEvent)
    def添加_foo_属性(对象、事件):
    obj.foo='baz'
    
  • 需要在您的类型XML中注册:

    来自plone.dexterity.content导入项
    类别MyItem(项目):
    “”“自定义内容类”“”
    ...
    
    然后在您的灵巧FTI XML文件中,添加
    klass
    属性:

    my.package.myitem.myitem
    

我修改了之前的评论
是_folderish
是索引,
isPrincipiaFolderish
是对象属性。这是在灵巧对象上设置的,请参见。