要在Plone文件夹上获得一次性视图,我会执行类似这样的操作(并非显示所有代码):
在configure.zcml:
<!-- Marker interface. Set this on the folder through the ZMI
interfaces tab.
-->
<interface interface=".interfaces.IMySpecialFolder" />
Run Code Online (Sandbox Code Playgroud)
在browser/configure.zcml:
<!-- Special case view. Set as the folder's view through the ZMI
properties tab (layout property).
-->
<browser:page
for="..interfaces.IMySpecialFolder"
name="special"
template="special.pt"
permission="zope2.View"
/>
Run Code Online (Sandbox Code Playgroud)
这很好用,但我想控制文件夹的显示菜单,只列出我的特殊案例视图.我可以添加它,它只显示在我标记的文件夹上,但我必须更改站点范围的ATFolder FTI.
在browser/configure.zcml:
<include package="plone.app.contentmenu" />
<browser:menuItem
for="..interfaces.IMySpecialFolder"
menu="plone_displayviews"
title="Special view"
action="@@special"
description="Special case folder view"
/>
Run Code Online (Sandbox Code Playgroud)
在profiles/default/types/Folder.xml:
<?xml version="1.0"?>
<object name="Folder">
<property name="view_methods" purge="False">
<element value="special"/>
</property>
</object>
Run Code Online (Sandbox Code Playgroud)
当然,我不能删除现有的可用视图方法而不影响站点上的每个文件夹.
有没有办法在不改变内容类型的FTI的情况下进行这种一次性显示菜单调整?
实际上,似乎此问题已经解决过.p4a.z2utils补丁CMFDynamicViewFTI,用于从IDynamicallyViewable适配器查找中获取可用视图的列表.(dateable.chronos将此机制用于其文件夹日历视图).所以我的问题变成:
有没有办法在不更改内容类型的FTI且不修补Plone的情况下进行一次性显示菜单调整?
回答我自己的问题,我意识到实现一次性文件夹视图的最直接方法是遵循 Plone 本身在文件夹中应用的模式:调用自定义视图的MembersPythonScript ,例如index_html
member_search=context.restrictedTraverse('member_search_form')
return member_search()
Run Code Online (Sandbox Code Playgroud)
Products.CMFPlone说明如何使用 GenericSetup 导入处理程序设置此类 PythonScript。
回想起来,我意识到我的问题场景中不需要标记界面。在答案中也没有必要。
请注意,此解决方案不会导致我要求的“文件夹的显示菜单仅列出我的特殊情况视图”,而是完全取消了显示菜单。我对此很满意。
| 归档时间: |
|
| 查看次数: |
1419 次 |
| 最近记录: |