Wednesday, 26 March 2014

How to add custom field in Magento newsletter module.

Step 1 : Open file: root/app/design/frontend/your-package-name/your-theme/template/newsletter/subscribe.phtml

Add input field for ‘Name’ before ‘Email’ Field :
<input type="text" name="subscriber_name" id="subscriber_name" title="<?php echo $this->__('Name') ?>" />
 
Step 2 : Open file:  root/app/code/core/Mage/Newsletter/controllers/SubscriberController.php
A. Search:
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
Replace with:
if ($this->getRequest()->getPost('subscriber_name'))
{
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
$subscriber_name     = (string) $this->getRequest()->getPost('subscriber_name');
$subscriber->setsubscriber_name($subscriber_name);
}
$status = Mage::getModel('newsletter/subscriber')->subscribe($email,$subscriber_name);
 
Step 3 : Open file : root/app/code/core/Mage/Newsletter/Model/Subscriber.php
A. Search:
public function subscribe($email)
Replace with:
public function subscribe($email,$subscriber_name=null)
B. Search:
$this->setSubscriberEmail($email);
Add after it:
$this->setsubscriber_name($subscriber_name);
C. Search:
public function setEmail($value)
{
return $this->setSubscriberEmail($value);
}
Add after it:
public function setsubscriber_name($value)
{
return $this->setSubscriberName($value);
}
Step 4 : Open file : root/app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php
A. Search:
$this->addColumn('email', array(
'header'    => Mage::helper('newsletter')->__('Email'),
'index'     => 'subscriber_email'
));
Add before it:
$this->addColumn('subscriber_name', array(
'header'    => Mage::helper('newsletter')->__('Subscriber Name'),
'index'     => 'subscriber_name',
'default'   =>    '----'
));
Step 5 : Open your database.
Create a field ‘subscriber_name’ in table “Newsletter Subscriber”.
Step 6 : Clear the caches ................