다른 콘텐츠 유형에 대한 다양한보기를 만들고 등록했습니다. 그들은 잘하고 있지만 이미지 및 파일 이외의 콘텐츠 형식에만 작동합니다. 이미지 콘텐츠 유형에 대해보기를 사용할 수 없습니다.이미지에 대한보기를 등록하는 방법 content_type?
이미지에는 레이아웃 메뉴가 없습니다. 그럼에도 불구하고보기는 /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.py
반환 없음
getAvailableLayouts()
의 다음 호출
view = zope.component.queryMultiAdapter((self, self.REQUEST),
zope.interface.Interface,
name='image_view')
이미지 및 파일보기를 등록하는 방법에 대한 힌트가 있습니까?
코딩 내 모든 뷰와 유사하며 여기 (문서에 대한 예제와 이미지)를 재생 :
/browser/about_view.py
from Products.Five import BrowserView
class AboutView(BrowserView):
""" """
에서
<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/configure.zcml
에서 /profiles/default/types/Document.xml
<object name="Document">
<property name="view_methods" purge="False">
<element value="about-view"/>
</property>
</object>
에서
/profiles/default/types/Image.xml
<object name="Image">
<property name="view_methods" purge="False">
<element value="camera-view"/>
</property>
</object>
에서 /browser/camera_view.py
from Products.Five import BrowserView
class CameraView(BrowserView):
""" """
에서 16,
<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>
대단히 감사합니다! 'ATBlob'의 클래스 정의를 읽은 후에,'__repr __()'이'replace (ATBlob .__ name__, 'ATImage', 1)'로 수정 될 수는 없습니다. 이것은 잠시 동안 나를 괴롭혔다. Plone Lord는 신비한 방식으로 움직입니다. ;-) – wolfrevo
오, 이런, 그건 나쁘지. 기존 테스트를 새 구현과 함께 유지하려고 노력하는 것은 어리석은 일이라고 생각합니다. –