let you want to add occupation for customer registration
1. Add the following code in the form tag in register.phtml and edit.phtml
app/design/frontend/default/yourstore/template/customer/form/register.html
////////////////
<div class="input-box">
<label for="occupation"><?php echo $this->__('Occupation') ?></label><br/>
<input type="text" name="occupation" id="occupation" value="<?php echo $this->htmlEscape($this->getFormData()->getOccupation()) ?>" title="<?php echo $this->__('Occupation') ?>" class="input-text" />
</div>
/////////////////
2. replace the following block of code in
app/code/core/Mage/Customer/Model/Resource/Setup.php
//////////
'group_id' => array(
'type' => 'static',
'label' => 'Group',
'input' => 'select',
'source' => 'customer/customer_attribute_source_group',
'sort_order' => 25,
'position' => 25,
'adminhtml_only' => 1,
'admin_checkout' => 1,
),
///////////
with this
////////////
'group_id' => array(
'type' => 'static',
'label' => 'Group',
'input' => 'select',
'source' => 'customer/customer_attribute_source_group',
'sort_order' => 25,
'position' => 25,
'adminhtml_only' => 1,
'admin_checkout' => 1,
),
'occupation' => array(
'type' => 'varchar',
'label' => 'Occupation',
'input' => 'text',
'sort_order' => 7,
'validate_rules' => 'a:2:{s:15:"max_text_length";i:255;s:15:"min_text_length";i:1;}',
'position' => 120,
),
///////////
3. find the following line of code around line 280 in
app/code/core/Mage/Customer/controllers/AccountController.php
///////
$customerData = $customerForm->extractData($this->getRequest());
//////
and replace with
////////////
$customerData = $customerForm->extractData($this->getRequest());
//new code added to save occupation in database start here
if($this->getRequest()->getParam('occupation'))
{
$customer->setOccupation($this->getRequest()->getParam('occupation'));
}
//new code added to save occupation in database end here
///////////
4. add the following code in
app/code/core/Mage/Customer/etc/config.xml
your
under the customer_account
////////
<occupation>
<create>1</create>
<update>1</update>
</occupation>
//////
5. put this script in your register.phtml 's header file and remove it after one run
<?php
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$AttrCode = 'occupation';
$settings = array (
'position' => 1,
'is_required'=> 0
);
$setup->addAttribute('1', $AttrCode, $settings);
?>
To show this field in admin end in customer tab field
1. find and replace this function of code in
app/code/core/Mage/AdminHtml/Block/Customers/Grid.php
/////////////////
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('customer/customer_collection')
->addNameToSelect()
->addAttributeToSelect('email')
->addAttributeToSelect('created_at')
->addAttributeToSelect('group_id')
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');
$this->setCollection($collection);
return parent::_prepareCollection();
}
///////////////////
and replace with
//////////////////
protected function _prepareCollection()
{
$collection = Mage::getResourceModel('customer/customer_collection')
->addNameToSelect()
->addAttributeToSelect('email')
->addAttributeToSelect('occupation')
->addAttributeToSelect('created_at')
->addAttributeToSelect('group_id')
->joinAttribute('billing_postcode', 'customer_address/postcode', 'default_billing', null, 'left')
->joinAttribute('billing_city', 'customer_address/city', 'default_billing', null, 'left')
->joinAttribute('billing_telephone', 'customer_address/telephone', 'default_billing', null, 'left')
->joinAttribute('billing_region', 'customer_address/region', 'default_billing', null, 'left')
->joinAttribute('billing_country_id', 'customer_address/country_id', 'default_billing', null, 'left');
$this->setCollection($collection);
return parent::_prepareCollection();
}
///////////////////
2. find and replace this function of code in
app/code/core/Mage/AdminHtml/Block/Customers/Grid.php
///////////
protected function _prepareColumns()
{
$this->addColumn('entity_id', array(
'header' => Mage::helper('customer')->__('ID'),
'width' => '50px',
'index' => 'entity_id',
'type' => 'number',
));
$this->addColumn('firstname', array(
'header' => Mage::helper('customer')->__('First Name'),
'index' => 'firstname'
));
$this->addColumn('lastname', array(
'header' => Mage::helper('customer')->__('Last Name'),
'index' => 'lastname'
));
/* $this->addColumn('name', array(
'header' => Mage::helper('customer')->__('Name'),
'index' => 'name'
));*/
$this->addColumn('email', array(
'header' => Mage::helper('customer')->__('Email'),
'width' => '150',
'index' => 'email'
));
$this->addColumn('occupation', array(
'header' => Mage::helper('customer')->__('Occupation'),
'width' => '150',
'index' => 'occupation'
));
$groups = Mage::getResourceModel('customer/group_collection')
->addFieldToFilter('customer_group_id', array('gt'=> 0))
->load()
->toOptionHash();
$this->addColumn('group', array(
'header' => Mage::helper('customer')->__('Group'),
'width' => '100',
'index' => 'group_id',
'type' => 'options',
'options' => $groups,
));
$this->addColumn('Telephone', array(
'header' => Mage::helper('customer')->__('Telephone'),
'width' => '100',
'index' => 'billing_telephone'
));
$this->addColumn('billing_postcode', array(
'header' => Mage::helper('customer')->__('ZIP'),
'width' => '90',
'index' => 'billing_postcode',
));
$this->addColumn('billing_country_id', array(
'header' => Mage::helper('customer')->__('Country'),
'width' => '100',
'type' => 'country',
'index' => 'billing_country_id',
));
$this->addColumn('billing_region', array(
'header' => Mage::helper('customer')->__('State/Province'),
'width' => '100',
'index' => 'billing_region',
));
$this->addColumn('customer_since', array(
'header' => Mage::helper('customer')->__('Customer Since'),
'type' => 'datetime',
'align' => 'center',
'index' => 'created_at',
'gmtoffset' => true
));
if (!Mage::app()->isSingleStoreMode()) {
$this->addColumn('website_id', array(
'header' => Mage::helper('customer')->__('Website'),
'align' => 'center',
'width' => '80px',
'type' => 'options',
'options' => Mage::getSingleton('adminhtml/system_store')->getWebsiteOptionHash(true),
'index' => 'website_id',
));
}
$this->addColumn('action',
array(
'header' => Mage::helper('customer')->__('Action'),
'width' => '100',
'type' => 'action',
'getter' => 'getId',
'actions' => array(
array(
'caption' => Mage::helper('customer')->__('Edit'),
'url' => array('base'=> '*/*/edit'),
'field' => 'id'
)
),
'filter' => false,
'sortable' => false,
'index' => 'stores',
'is_system' => true,
));
$this->addExportType('*/*/exportCsv', Mage::helper('customer')->__('CSV'));
$this->addExportType('*/*/exportXml', Mage::helper('customer')->__('Excel XML'));
return parent::_prepareColumns();
}
///////////////
3...find the following line of code in
app\code\core\Mage\Adminhtml\Block\Customer\Edit\Tab\Account.php
/////
$suffixElement = $form->getElement('suffix');
if ($suffixElement) {
$suffixOptions = $this->helper('customer')->getNameSuffixOptions($customerStoreId);
if (!empty($suffixOptions)) {
$fieldset->removeField($suffixElement->getId());
$suffixField = $fieldset->addField($suffixElement->getId(),
'select',
$suffixElement->getData(),
$form->getElement('lastname')->getId()
);
$suffixField->setValues($suffixOptions);
if ($customer->getId()) {
$suffixField->addElementValues($customer->getSuffix());
}
}
}
//////
and replace with
//////////////////////////////
$suffixElement = $form->getElement('suffix');
if ($suffixElement) {
$suffixOptions = $this->helper('customer')->getNameSuffixOptions($customerStoreId);
if (!empty($suffixOptions)) {
$fieldset->removeField($suffixElement->getId());
$suffixField = $fieldset->addField($suffixElement->getId(),
'select',
$suffixElement->getData(),
$form->getElement('lastname')->getId()
);
$suffixField->setValues($suffixOptions);
if ($customer->getId()) {
$suffixField->addElementValues($customer->getSuffix());
}
}
}
///new code start here
$fieldset->addField('occupation', 'text', array(
'name' => 'occupation',
'label'=>'Occupation'
));
///new field end here
/////////////////////////////
4.find the follwing line of code around line no. 280 in file
app\code\core\Mage\Adminhtml\controllers\CustomerController.php
///////////////
if (isset($data['subscription'])) {
$customer->setIsSubscribed(true);
} else {
$customer->setIsSubscribed(false);
}
////////////////
and replace with
///////////////
if (isset($data['subscription'])) {
$customer->setIsSubscribed(true);
} else {
$customer->setIsSubscribed(false);
}
//new code added to save occupation in database start here
if(isset($data['account']['occupation']))
{
$customer->setData('occupation',$data['account']['occupation']);
}
//new code added to save occupation in database end here
///////////////
Enjoy !!!!!!!!