Скрытие поля из формы @@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')
, я должен был угадать название вашего дополнительного поля.Затем вы можете зарегистрировать эту настраиваемую панель в ZCML для своего слоя браузера тем или непосредственно на своем сайте Plone или в пользовательском интерфейсе.Здесь я выбрал простой способ и зарегистрировал его для объекта сайта Plone:
<browser:page
for="Products.CMFPlone.Portal.PloneSite"
name="personal-information"
class=".mymodule.CustomizedUserDataPanel"
permission="cmf.SetOwnProperties"
/>
Это должно работать как для Plone 4.0, так и для 4.1, поскольку этот конкретный класс не изменился.