How to add custom attribute to Magento’s registeration page

For demonstration, we will add a height attribute to Magento’s registeration page
1. Add following lines from 7 to 10 in app\code\core\Mage\Customer\etc\config.xml
[code language=”xml”]
<customer_account>

<gender>
<create>1</create>
<update>1</update>
</gender>
<height>
<create>1</create>
<update>1</update>
</height>

</customer_account>
[/code]

2. In app\design\frontend\default\yourtheme\customer\form\edit.phtml, find the below code
[code language=”php”]
<li>
<label for="email" class="required"><em>*</em><?php echo $this->__(‘Email Address’) ?></label>
<div class="input-box">
<input type="text" name="email" id="email" value="<?php echo $this->htmlEscape($this->getCustomer()->getEmail()) ?>" title="<?php echo $this->__(‘Email Address’) ?>" class="input-text required-entry validate-email" />
</div>
</li>
[/code]
and then add this code snippet right after the above code
[code language=”php”]
<li>
<div class="input-box">
<label for="height"><?php echo $this->__(‘Height’) ?> </label><br/>
<input type="text" name="height" id="height" value="<?php echo $this->htmlEscape($this->getCustomer()->getHeight()) ?>" title="<?php echo $this->__(‘Height’) ?>" class="input-text" />
</div>
</li>
[/code]

4. Add this code at the beginning in the file app\design\frontend\default\yourtheme\template\persistent\customer\form\register.phtml
[code language=”php”]
<?php
$setup = Mage::getModel(‘customer/entity_setup’, ‘core_setup’);
$setup->addAttribute(‘customer’, ‘height’, array(
‘type’ => ‘decimal’,
‘label’ => ‘Height’,
‘input’ => ‘text’,
‘required’ => false,
‘sort_order’ => 8,
));
if (version_compare(Mage::getVersion(), ‘1.6.0’, ‘<=’))
{
$customer = Mage::getModel(‘customer/customer’);
$attrSetId = $customer->getResource()->getEntityType()->getDefaultAttributeSetId();
$setup->addAttributeToSet(‘customer’, $attrSetId, ‘General’, ‘height’);
}
if (version_compare(Mage::getVersion(), ‘1.4.2’, ‘>=’))
{
Mage::getSingleton(‘eav/config’)
->getAttribute(‘customer’, ‘height’)
->setData(‘used_in_forms’, array(‘adminhtml_customer’,’customer_account_create’,’customer_account_edit’,’checkout_register’))
->save();
}
?>
[/code]

Find the below code
[code language=”php”]
<li>
<label for="email_address" class="required"><em>*</em><?php echo $this->__(‘Email Address’) ?></label>
<div class="input-box">
<input type="text" name="email" id="email_address" value="<?php echo $this->escapeHtml($this->getFormData()->getEmail()) ?>" title="<?php echo $this->__(‘Email Address’) ?>" class="input-text validate-email required-entry" />
</div>
</li>
[/code]
and then add this code snippet right after the above code
[code language=”php”]
<div class="input-box">
<label for="height"><?php echo $this->__(‘Height’) ?></label><br/>
<input type="text" name="height" id="height" value="<?php echo $this->htmlEscape($this->getFormData()->getHeight()) ?>" title="<?php echo $this->__(‘Height’) ?>" class="input-text" />
</div>
[/code]

6. Reload the registration page, you will see the Height attribute showing up.

7. If you go to the Magento database, and run this query:
[code language=”sql”]
select * from eav_attribute
where attribute_code="height";
[/code]
you should see the newly added attribute “height”.

Note: The above are demonstrations for the steps needed to add a new attribute in Magento, which involved changing the Magento core files. The proper way to do it is to create a new module which won’t change Magento’s core files and does the necessary steps mentioned above for adding new attributes in Magento.

Search within Codexpedia

Custom Search

Search the entire web

Custom Search