如何使Plone灵巧容器看起来像Archetypes文件夹

如何使Plone灵巧容器看起来像Archetypes文件夹,plone,dexterity,Plone,Dexterity,我已经创建了一个敏捷产品,它包括容器和非容器敏捷内容类型。发现了collective.documentviewer耶!谢谢喂!,我想使用它的dvpdf组视图,但它在ZCML中注册为文件夹,我的灵巧容器不符合条件。我已经查看了容器类型上可用的web界面,添加了SiteRoot,这使视图得以应用,但也是完全错误的 我相信有一种正确的方法可以做到这一点,而且我非常确定它是整个适配器/接口机制的核心,但我只是在任何一本书中都找不到它 有人想解释一下吗?首先,一两行代码可以让灵巧容器假装它也是一个文件夹;

我已经创建了一个敏捷产品,它包括容器和非容器敏捷内容类型。发现了collective.documentviewer耶!谢谢喂!,我想使用它的dvpdf组视图,但它在ZCML中注册为文件夹,我的灵巧容器不符合条件。我已经查看了容器类型上可用的web界面,添加了SiteRoot,这使视图得以应用,但也是完全错误的

我相信有一种正确的方法可以做到这一点,而且我非常确定它是整个适配器/接口机制的核心,但我只是在任何一本书中都找不到它

有人想解释一下吗?首先,一两行代码可以让灵巧容器假装它也是一个文件夹;其次,如何更改灵巧类型的单个实例的默认视图,以便它显示外部组件的视图

谢谢。

1。也为灵巧容器注册视图

该视图是为Archetypes文件夹interface Products.CMFCore.interfaces.\u content.IFolderish注册的,但您的dexterity容器不提供此接口,而是提供plone.dexterity.interfaces.IDexterityContainer。 原因可能是产品和/或视图与灵活性不兼容

另外,您也可以通过在包中的configure.ZCML中加入一点ZCML来注册IDexterityContainer接口的视图来自己尝试一下。另请参见:

是从复制的,但我已将=的接口更改为灵巧容器接口,因此视图也适用于灵巧容器

内部命令告诉ZCML解析器,应该像configure.ZCML将直接在collective.documentviewer中一样应用配置-例如,这允许您使用原始模板,否则您将不得不复制它或做一些讨厌的事情

我没有亲自测试它:视图可能仍然需要一个原型容器,而不能与灵巧容器一起工作。也可能是您必须从documentviewer注册更多的组件,以获得灵活性容器,可能是菜单?请查看在中注册的内容

如果一切正常,你应该直接考虑在CopyDo.DoopTeVistor上做修改,并向作者提出一个请求,知道灵巧不是核心。但首先要问你是否应该这样做,以及你应该如何做:-

二,。更改默认视图

使用plone,可以为特定类型定义多个视图。然后,可以在“显示”菜单中针对该类型的每个实例选择该视图。如果你敞开心扉http://localhost:8080/Plone/portal_types/manage_main 然后单击您的类型,这里有一个可用的视图方法字段,您可以在单独的行中添加视图名称dvpdf group view

创建类型的新对象或访问现有对象后,将有一个显示菜单,其中应列出视图。选择它,此对象现在将此视图作为默认视图

如果要使视图在该类型的其他对象上不可选择,可以将其从类型配置中删除,使其不再可选择-对象的现有配置将保留。

1。也为灵巧容器注册视图

该视图是为Archetypes文件夹interface Products.CMFCore.interfaces.\u content.IFolderish注册的,但您的dexterity容器不提供此接口,而是提供plone.dexterity.interfaces.IDexterityContainer。 原因可能是产品和/或视图与灵活性不兼容

另外,您也可以通过在包中的configure.ZCML中加入一点ZCML来注册IDexterityContainer接口的视图来自己尝试一下。另请参见:

是从复制的,但我已将=的接口更改为灵巧容器接口,因此视图也适用于灵巧容器

内部命令告诉ZCML解析器,应该像configure.ZCML将直接在collective.documentviewer中一样应用配置-例如,这允许您使用原始模板,否则您将不得不复制它或做一些讨厌的事情

我没有亲自测试它:视图可能仍然需要一个原型容器,而不能与灵巧容器一起工作。也可能是您必须从documentviewer注册更多的组件,以获得灵活性容器,可能是菜单?请查看在中注册的内容

如果一切正常,你应该直接考虑在CopyDo.DoopTeVistor上做修改,并向作者提出一个请求,知道灵巧不是核心。但首先要问你是否应该这样做,以及你应该如何做:-

二,。更改默认视图

使用plone,可以为一个s定义多个视图 特异型。然后,可以在“显示”菜单中针对该类型的每个实例选择该视图。如果你敞开心扉http://localhost:8080/Plone/portal_types/manage_main 然后单击您的类型,这里有一个可用的视图方法字段,您可以在单独的行中添加视图名称dvpdf group view

创建类型的新对象或访问现有对象后,将有一个显示菜单,其中应列出视图。选择它,此对象现在将此视图作为默认视图


如果要使视图在该类型的其他对象上不可选择,您可以将其从类型配置中删除,使其不再可选择-对象的现有配置将保留。

这些说明非常完美-谢谢!我看到但忘记了您可以将外来产品的配置说明放入本地configure.zcml.Editing超时。这些说明非常完美-谢谢!视图现在可以工作,并且可以通过承诺的显示菜单打开实例。我看到了,但忘记了您可以将外国产品的配置说明放入本地configure.zcml中。我很高兴对collective.documentviewer的副本进行更改;功能更改只是将空格分隔的plone.dexterity.interfaces.IDexterityContainer添加到视图的for行,对吗?需要对灵巧容器进行何种类型的额外测试?不客气:将IDexterityContainer添加到同一个ZCML标记将不起作用-for只能包含一个接口。在这种情况下,在其他标记(如在ZCML条件下)中可以有多个空格分隔的值,因此,它仍然没有灵巧的工作方式,而是原型。我建议与collective.documentviewer的作者联系,看看应该如何做。也许在collective.documentviewer中使用非原型特定的接口就足够了,它由原型和灵巧容器提供。OFS.interfaces.IFolder应该可以工作。这些说明非常完美-谢谢!我看到但忘记了您可以将外来产品的配置说明放入本地configure.zcml.Editing超时。这些说明非常完美-谢谢!视图现在可以工作,并且可以通过承诺的显示菜单打开实例。我看到了,但忘记了您可以将外国产品的配置说明放入本地configure.zcml中。我很高兴对collective.documentviewer的副本进行更改;功能更改只是将空格分隔的plone.dexterity.interfaces.IDexterityContainer添加到视图的for行,对吗?需要对灵巧容器进行何种类型的额外测试?不客气:将IDexterityContainer添加到同一个ZCML标记将不起作用-for只能包含一个接口。在这种情况下,在其他标记(如在ZCML条件下)中可以有多个空格分隔的值,因此,它仍然没有灵巧的工作方式,而是原型。我建议与collective.documentviewer的作者联系,看看应该如何做。也许在collective.documentviewer中使用非原型特定的接口就足够了,它由原型和灵巧容器提供。OFS.interfaces.IFolder应该可以工作。
<configure
    xmlns="http://namespaces.zope.org/zope"
    xmlns:browser="http://namespaces.zope.org/browser">

    <configure package="collective.documentviewer">

        <browser:page
            name="dvpdf-group-view"
            for="plone.dexterity.interfaces.IDexterityContainer"
            class=".views.GroupView"
            template="templates/group-view.pt"
            permission="zope2.View"
            layer=".interfaces.ILayer" />

    </configure>

</configure>