在@@ personal-information视图上隐藏自定义字段

问题描述

|| 我正在遵循Collective.examples.userdata在注册表单上添加一些自定义字段一个字段是“接受条款”,ceuserdata也具有它和文档,并且如包装说明中所述(或至少以我的理解),特殊的“接受条款”字段应仅显示注册表格,但不在@@ personal-@R_742_4045@ion视图上。 我还尝试使用新的Plone新站点在ceoutdata上添加ceuserdata,它也显示在@@ personal-@R_742_4045@ion上,因此我想知道它是否被我误解了或者是否有错误那里。 有人知道如何在@@ register表单上显示字段,但如何在@@ personal-@R_742_4045@ion上隐藏该字段吗?     

解决方法

        开箱即用的方式不支持从
@@personal-information
表单中隐藏字段并仅在
@@register
表单中显示该字段。 您必须自定义一种或另一种形式来完成此操作;自定义plone.app.users.browser.personalpreferences.UserDataPanel以删除您的字段,或提供新版本的plone.app.users.browser.register.RegistrationForm以在其中添加字段。 这是我的处理方式:
plone.app.users.browser.personalpreferences import UserDataPanel

class CustomizedUserDataPanel(UserDataPanel):
    def __init__(self,context,request):
        super(CustomizedUserDataPanel,self).__init__(context,request)
        self.form_fields = self.form_fields.omit(\'acceptTerms\')
注意
.omit(\'acceptTerms\')
,我不得不猜测您额外字段的名称。然后,您可以在主题浏览器层上,或者直接在您的Plone网站或自定义界面上,使用ZCML注册此自定义面板。在这里,我采取了简单的方法并将其注册为Plone站点对象:
<browser:page
    for=\"Products.CMFPlone.Portal.PloneSite\"
    name=\"personal-information\"
    class=\".mymodule.CustomizedUserDataPanel\"
    permission=\"cmf.SetOwnProperties\"
    />
这对于Plone 4.0和4.1均适用,因为此特定类未更改。