1. 也注册敏捷容器的视图
该视图已为 Archetypes 文件夹接口 ( Products.CMFCore.interfaces._content.IFolderish
) 注册,但您的灵巧容器不提供此接口 (但是plone.dexterity.interfaces.IDexterityContainer
)。原因可能是产品和/或视图与灵活性不兼容。
IDexterityContainer
无论如何,您可以通过在您的包中添加一点 ZCML 来为界面注册视图来自己尝试一下configure.zcml
(另请参阅Dexterity 开发人员手册的创建包部分):
<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>
这是从collective.documentviewer configure.zcml<browser:page>
复制的,但我已将接口更改为敏捷容器接口,因此该视图也适用于敏捷容器。for=
内部<configure package="collective.documentviewer">
告诉 ZCML 解析器应该像 configure.zcml 直接在其中一样应用配置collective.documentviewer
- 例如,这允许您使用原始模板(否则您将不得不复制它或做一些讨厌的事情)。
我自己没有测试它:视图可能仍然需要原型容器并且不能与灵巧容器一起使用。也可能是您必须从文档查看器中为灵巧容器注册更多组件(也许是菜单?看看原始 configure.zcml中注册的内容。
如果一切正常,您应该考虑直接在github上的collective.documentviewer 中进行更改并向作者提出拉取请求(请注意,敏捷性还不是plone-core)。但首先要问你是否应该以及如何做到这一点:-)
2.更改默认视图
使用 plone 可以为特定类型定义多个视图。然后可以在此类型的每个实例的显示菜单中选择视图。如果您打开http://localhost:8080/Plone/portal_types/manage_main
并单击您的类型,则会出现一个字段Available view methods
,您可以在其中将视图名称 ( dvpdf-group-view
) 添加到单独的行上。
在您创建了您的类型的新对象或访问现有对象后,您将拥有一个“显示”菜单,该菜单应列出该视图。选择它,这个对象现在默认有这个视图。
(如果您想让视图在此类型的其他对象上不可选,您可以将其从类型配置中删除,使其不再可选 - 对象的现有配置将保留)。