使用新界面标记灵巧内容类型的推荐方法

时间:2011-10-18 17:26:17

标签: plone dexterity

在处理基于敏捷的项目时,我需要一种内容类型来支持collective.quickupload,方法是使用IQuickUploadCapable接口进行标记。

我目前正在做的是在我的configure.zcml文件中添加'implements':

`<class class="plone.dexterity.content.Container">      
     <implements interface="collective.quickupload.browser.interfaces.IQuickUploadCapable" />
 </class>`

由于我的内容类型是一个容器,但是我的第一个倾向是使用grok样式方法而不是在ZCML中声明它。什么是告诉我的灵巧内容类型的grok / dexterity方法,它实现了一个额外的接口,还是我应该坚持当前的方法?

此外,我尝试在我的profiles/default/types/my.dexterity.content.xml文件中添加界面作为行为,但这不起作用(我并不认为它会因为行为有不同的用途)。

3 个答案:

答案 0 :(得分:4)

肖恩的回答很好。另一种方法是创建一个行为并应用它。您需要使用以下命令注册行为:

<plone:behavior
    title="Quickupload"
    provides="collective.quickupload.browser.interfaces.IQuickUploadCapable"
    />

然后,您可以将'collective.quickupload.browser.interfaces.IQuickUploadCapable'添加到FTI中的行为列表中。

您使用的方法并不好,因为它意味着所有基于容器的敏捷类型获得标记接口,而不仅仅是您的类型。

答案 1 :(得分:2)

为什么不在类型界面中的form.Schema之后将IQuickUploadCapable作为mixin子类化?

答案 2 :(得分:1)

您不能将其用作行为,因为它不声称以这种方式使用。

当我从pypi读取时,它旨在用于portlet或viewlet中。

要以grok风格添加它,您应该:

from collective.quickupload.browser.interfaces import IQuickUploadCapable
from plone.directives import form
class IMyContent(form.schema):
    grok.implements(IQuickUploadCapable)

就是这样!

确保您的内容类型允许在其中添加文件,因此文件夹既可以添加文件(也可以不限制任何特定的内容类型)。