Clear the cache and you should be set.
I want to add 3 new fields in the registration form but only for my Brasilian shop.
Also the user is able to edit these fields in his profile
Hello @borche_glafche
you need to create attribute as non required
http://iulian.fenici.ro/programmatically-add-a-customer-attribute-in-magento/
use below link to create attribute
you need to add that attribute
Hope it will help you.
if work then mark as solution
Hello @borche_glafche,
You need to create a new extension to make it clean, I add one filed on by an example then you will add easily another attribute on it.
Let's call the extension StackExchange_Customer.
You will need the following files:
app/etc/modules/StackExchange_Customer.xml - the declaration file
<?xml version="1.0"?> <config> <modules> <StackExchange_Customer> <active>true</active> <codePool>local</codePool> <depends><Mage_Customer/></depends> </StackExchange_Customer> </modules> </config>
app/code/local/StackExchange/Customer/etc/config.xml - the configuration file
<?xml version="1.0"?> <config> <modules> <StackExchange_Customer> <version>1.0.0</version> </StackExchange_Customer> </modules> <global> <helpers> <stackexchange_customer> <class>StackExchange_Customer_Helper</class> </stackexchange_customer> </helpers> <resources> <stackexchange_customer_setup> <setup> <module>StackExchange_Customer</module> <class>Mage_Customer_Model_Resource_Setup</class> </setup> </stackexchange_customer_setup> </resources> </global> <frontend> <layout> <updates> <stackexchange_customer> <file>stackexchange_customer.xml</file> </stackexchange_customer> </updates> </layout> <translate> <modules> <StackExchange_Customer> <files> <default>StackExchange_Customer.csv</default> </files> </StackExchange_Customer> </modules> </translate> </frontend> </config>
app/code/local/StackExchange/Customer/sql/stackexchange_customer_setup/install-1.0.0.php - the install file. Will add the new attribute.
<?php $this->addAttribute('customer', 'license_number', array( 'type' => 'varchar', 'label' => 'License Number', 'input' => 'text', 'position' => 120, 'required' => false,//or true 'is_system' => 0, )); $attribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'license_number'); $attribute->setData('used_in_forms', array( 'adminhtml_customer', 'checkout_register', 'customer_account_create', 'customer_account_edit', )); $attribute->setData('is_user_defined', 0); $attribute->save();
app/code/local/StackExchange/Customer/Helper/Data.php - the module main helper
<?php class StackExchange_Customer_Helper_Data extends Mage_Core_Helper_Abstract { }
This will add your attribute for the customer.
It should work nicely on the backend.
Unfortunately, you have to edit the frontend templates manually now because Magento does not have any event or empty block where you can put your fields.
For this you need the following.
app/design/frontend/base/default/layout/stackexchange_customer.xml
<?xml version="1.0"?> <layout> <customer_account_edit> <reference name="customer_edit"> <action method="setTemplate"> <template>stackexchange_customer/form/edit.phtml</template> </action> </reference> </customer_account_edit> <customer_account_create> <reference name="customer_form_register"> <action method="setTemplate"> <template>stackexchange_customer/register.phtml</template> </action> </reference> </customer_account_create> </layout>
And now the templates.
app/design/frontend/base/default/template/stackexchange_customer/register.phtml - the registration template.
For this one make a clone of the /app/design/frontend/{package}/{theme}/template/persistent/customer/form/register.phtml and just insert this somewhere inside the form. I don't need to post the full file here. Arrange it as you please
<li> <label for="license_number"><?php echo $this->__('License Number') ?></label> <div class="input-box"> <input type="text" name="license_number" id="license_number" value="<?php echo $this->escapeHtml($this->getFormData()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" /> </div> </li>
/app/design/frontend/base/default/template/stackexchange_customer/form/edit.phtml For this one clone /app/design/frontend/{package}/{theme}/template/customer/form/edit.phtml and insert somewhere inside the form this:
<li> <label for="license_number"><?php echo $this->__('License Number') ?></label> <div class="input-box"> <input type="text" name="license_number" id="license_number" value="<?php echo $this->htmlEscape($this->getCustomer()->getLicenseNumber()) ?>" title="<?php echo $this->__('License Number') ?>" class="input-text" /> </div> </li>
You can also create the translation file. Is not mandatory but it's nice to have
app/locale/en_US/StackExchange_Customer.csv
"License Number","License Number"
Clear the cache and you should be set.
The second link is Magento 2. Probably it wouldn't work for magento 1.9.
@borche_glafche wrote:I want to add 3 new fields in the registration form but only for my Brasilian shop.
Also the user is able to edit these fields in his profile