It's possible via layout XML
In your theme's local.xml
, add the following lines (before </layout>
):
<customer_account_create>
<reference name="customer_form_register">
<action method="setShowAddressFields"><value>1</value></action>
</reference>
</customer_account_create>
If you don't have a customized theme but a bought one, you should create a child theme for customizations like this.
Example
For the Ultimo theme, the theme resides in app/design/frontend/ultimo/default
(Ultimo is the "package", "default" the theme).
You should then create the directory app/design/frontend/ultimo/yourname/layout
and add a file local.xml
there:
<?xml version="1.0"?>
<layout>
<customer_account_create>
<reference name="customer_form_register">
<action method="setShowAddressFields"><value>1</value></action>
</reference>
</customer_account_create>
</layout>
Then configure the custom theme:
Answer to updated question
It's a totally different question now. To allow saving the telephone attribute of the customer in the registration form, you need to tell Magento that it is allowed to be used in that form (this was introduced in Magento 1.5 to prevent customers to modify arbitrary attributes that are not meant to be changed by them).
Write a setup script (as part of a new module, or an existing one if you already have a custom module dedicated to theme and configuration) which contains the following:
Mage::getSingleton('eav/config')
->getAttribute('customer', 'telephone')
->setData('used_in_forms', array('customer_account_create'))
->save();
Source: http://www.schmengler-se.de/en/2011/03/magento-1-5-neue-kundenattribute-im-backend-fomular-sichtbar-machen/
Ive seen this problem before, it turned out that the block for the address was being included in the html twice. Therefore you end up with two identical input forms, one with the content, and a second one not visible, which has no value - this is the field which is actually failing the validation but the javascript is triggering the warning on the first (visible) one.
If you view the source code, and look for the field name, if you see a second one then you have the same problem. You likely have a layout modification which is putting in the block for a second time somewhere.
Best Answer
Try this in your (Observer) file.
Because telephone is an address attribute.