Чтобы получить одноразовый просмотр папки Plone, я делаю что-то вроде этого (показан не весь код):
В configure.zcml
:
<!-- Marker interface. Set this on the folder through the ZMI
interfaces tab.
-->
<interface interface=".interfaces.IMySpecialFolder" />
В 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"
/>
Это прекрасно работает, но я бы хотел управлять меню отображения папки, чтобы отобразить только мой особый случай. Я могу добавить его, и он отображается только в моей помеченной папке, но мне нужно изменить 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"
/>
В profiles/default/types/Folder.xml
:
<?xml version="1.0"?>
<object name="Folder">
<property name="view_methods" purge="False">
<element value="special"/>
</property>
</object>
Конечно, я не могу удалить существующие доступные методы просмотра, не затрагивая все папки на сайте.
Есть ли способ настроить это одноразовое меню дисплея без изменения FTI типа контента?
На самом деле, похоже, что эта проблема уже решалась раньше. p4a.z2utils исправления CMFDynamicViewFTI
для получения списка доступных представлений из поиска адаптера IDynamicallyViewable
. ( dateable.chronos использует этот механизм для представлений календаря своих папок). Так что мой вопрос становится:
Есть ли способ сделать это одноразовое изменение меню дисплея без изменения FTI типа контента и без исправления Plone?