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/
Best Answer
A solution will be to customize the address
book.phtml
template by removing the links to edit and add addresses.