gpt4 book ai didi

plone - 如何为图像 content_type 注册 View ?

转载 作者:行者123 更新时间:2023-12-01 12:43:39 25 4
gpt4 key购买 nike

我为不同的内容类型创建并注册了不同的 View 。它们工作正常,但仅适用于图像和文件以外的内容类型。我无法使 View 可用于图像内容类型。

图像根本没有布局菜单。尽管如此, View 还是出现在 /Plone/portal_view_customizations 中:

Products.ATContentTypes.content.document.ATDocument
about-view (zope.publisher.interfaces.browser.IDefaultBrowserLayer)
Products.ATContentTypes.content.image.ATImage
camera-view (zope.publisher.interfaces.browser.IDefaultBrowserLayer)

但是 getAvailableLayouts 为图像返回一个空列表,为文档返回一个非空列表:

>>> image.getAvailableLayouts()
[]
>>> image.getTypeInfo().getAvailableViewMethods(image)
('image_view', 'camera-view')
>>> page.getAvailableLayouts()
[('about-view')]
>>> page.getTypeInfo().getAvailableViewMethods(page)
('document_view', 'about-view')

Products.CMFDynamicViewFTI-4.0.5-py2.7.egg/Products/CMFDynamicViewFTI/browserdefault.pygetAvailableLayouts() 中的以下调用返回 None

view = zope.component.queryMultiAdapter((self, self.REQUEST),
zope.interface.Interface,
name='image_view')

有什么提示可以为图像和文件注册 View 吗?

我所有观点的编码都相似,并在此处转载(文档和图像示例):

/browser/configure.zcml

<browser:page
for="Products.ATContentTypes.content.image.ATImage"
name="camera-view"
class=".camera_view.CameraView"
permission="zope2.View"
template="camera_view.pt"
/>

<browser:page
for="Products.ATContentTypes.content.document.ATDocument"
name="about-view"
class=".about_view.AboutView"
permission="zope2.View"
template="about_view.pt"
/>

/browser/about_view.py

from Products.Five import BrowserView
class AboutView(BrowserView):
""" """

/profiles/default/types/Document.xml

<object name="Document">
<property name="view_methods" purge="False">
<element value="about-view"/>
</property>
</object>

/browser/camera_view.py

from Products.Five import BrowserView
class CameraView(BrowserView):
""" """

/profiles/default/types/Image.xml

<object name="Image">
<property name="view_methods" purge="False">
<element value="camera-view"/>
</property>
</object>

/profiles/default/types.xml

<object name="portal_types" meta_type="Plone Types Tool">
<object name="Document" meta_type="Factory-based Type Information with dynamic views"/>
<object name="Image" meta_type="Factory-based Type Information with dynamic views"/>
</object>

最佳答案

在 Plone 4 中,图像(和文件)是基于 blob 的,实际上是来自 plone.app.blob 的 ATBlob 实例,而不是 ATImage。

您应该为 plone.app.blob.interfaces.IATBlobImage 接口(interface)注册您的 View ,该接口(interface)用作图像 blob 上的标记,而不是用于 ATImage 类。

关于plone - 如何为图像 content_type 注册 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21994787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com