Introduction ============ Since Plone 4, the registration form for new users is a Zope formlib_ form, defined in plone.app.users_. plone.app.users allows the site administrator to select fields from this schema to appear on the registration form. This product aims to show how you could extend or modify the default schema provided by plone.app.users, and add new fields to the registration form. How it works ============ Overriding the default schema ----------------------------- The default schema is defined in plone.app.users, and is provided by a utility. We override this utility in the file ``profiles/default/componentregistry.xml``:: In `adapter.py`, we repeat (yes, this is unfortunate) the fields we defined in the schema. For example, for the `firstname` field, we do this:: class EnhancedUserDataPanelAdapter(UserDataPanelAdapter): """ """ def get_firstname(self): return self.context.getProperty('firstname', '') def set_firstname(self, value): return self.context.setMemberProperties({'firstname': value}) firstname = property(get_firstname, set_firstname) .. _plone.app.users: http://pypi.python.org/pypi/plone.app.users .. _formlib: http://pypi.python.org/pypi/zope.formliba .. _plone.app.controlpanel: http://pypi.python.org/pypi/plone.app.controlpanel