Plone 隐藏@@personal information视图上的自定义字段

Plone 隐藏@@personal information视图上的自定义字段,plone,Plone,我将按照collective.examples.userdata在注册表表单上添加一些自定义字段 其中一个字段是“accept terms”,c.e.userdata也有该字段和文档,正如上面所说的(或者至少我是这样理解的),特殊的“accept terms”字段应该只显示在注册表上,而不显示在@@personal information视图上 我还尝试用一个新的Plone站点在我的构建中添加c.e.userdata,它也显示在@个人信息中,所以我想知道这是我的误解还是有错误 任何人都知道如何在

我将按照collective.examples.userdata在注册表表单上添加一些自定义字段

其中一个字段是“accept terms”,c.e.userdata也有该字段和文档,正如上面所说的(或者至少我是这样理解的),特殊的“accept terms”字段应该只显示在注册表上,而不显示在@@personal information视图上

我还尝试用一个新的Plone站点在我的构建中添加c.e.userdata,它也显示在@个人信息中,所以我想知道这是我的误解还是有错误


任何人都知道如何在@注册表窗体上显示字段,但在@个人信息上隐藏字段?

@@personal information
窗体上隐藏字段,只在
@@register
窗体上显示字段,这是不支持的,反之亦然

您必须自定义一个或另一个表单才能完成此任务;自定义plone.app.users.browser.personalpreferences.UserDataPanel以删除字段,或提供plone.app.users.browser.register.RegistrationForm的新版本以将字段添加到其中

我是这样做的:

plone.app.users.browser.personalpreferences导入用户数据面板
类CustomizedUserDataPanel(UserDataPanel):
定义初始化(自身、上下文、请求):
super(自定义数据面板,self)。\uuuu init\uuuu(上下文,请求)
self.form\u fields=self.form\u fields.omit('acceptTerms'))
注意,
.omit('acceptTerms')
,我不得不猜测您额外字段的名称。然后,您可以针对主题浏览器层,或直接在Plone站点或自定义界面上,使用ZCML注册此自定义面板。在这里,我采取简单的方法,并将其注册为Plone站点对象:



这应该适用于Plone 4.0和4.1,因为这个特定的类没有改变。

非常感谢,它工作得非常好!也许更新collective.examples.userdata也会有意义,因为文档中也这么说。