我正在开发一个Plone插件,需要为Dexterity内容重新设置皮肤替代编辑表单.我需要能够在AJAX覆盖中仅显示编辑表单的一部分(使用JQuery UI,而不是JQuery工具,因此在服务器端执行似乎比在JavaScript中过滤更合理)**.
来自Dexterity Developer's Guide的文档似乎表明我可以使用宏来创建自定义模板.但是,本节中缺少一些东西 - 对于不使用grok来绑定视图的人来说可能是一些关键的上下文,但也许还有其他东西.创建一个仅模板的视图失败(显然无法从视图类中找到名称),并且尝试将ZCML中的自定义模板绑定到stock视图类或它的子类都失败(忽略模板以支持股票模板).
我的目标:
什么行不通:
from plone.dexterity.browser.edit import DefaultEditForm
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
class MyEditForm(DefaultEditForm):
index = ViewPageTemplateFile('my_edit_template.pt')
Run Code Online (Sandbox Code Playgroud)
ZCML等价物(使用运行时魔术定义索引)在这里也不起作用.
如何将自定义模板注入编辑表单?
**我正在研究Solgema.fullcalendar与plone.app.event基于Dexterity的类型的兼容性.Solgema.fullcalendar使用jQuery UI弹出窗口,而不是plone.app.jquerytools叠加助手; 为了保持一致性,有了这个最小视图并且不试图模仿普通Plone叠加的JavaScript中的过滤机制是有意义的.
要在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"/> …Run Code Online (Sandbox Code Playgroud) 作为定制Plone的典型"集成商"程序员,我应该如何了解ZMI以帮助我更有效地编码?什么是设置,工具,陷阱,快捷方式和黑暗角落,这将节省我的时间,并帮助我编写更好的代码?
编辑:将其视为我在文件系统上编码的读取,使用GenericSetup配置文件进行设置更改.我知道在ZMI中做出改变是一个坏主意,并且通常很明确.但偶尔ZMI肯定是有用的:用于检查工作流,或检查内容项的权限,或通过portal_setup仅安装配置文件的一部分.ZMI真的没什么值得了解的吗?或者那里有其他有用的小花絮吗?