Magento: Newsletter Custom fields Title, Firstname, lastname, email | How to add Title, Firstname, lastname, email in newsletter module.
We have provided solution to add custom input fields in magento newsletter module. How to add the custom input fields on newsletter section Title, Firstname, lastname, email. Also we implemented newsletter in magento page.
We need to follow the below steps,
Create newsletter form in html format
<form action="http://websitename,com/newsletter/subscriber/new/" method="post" id="newsletter-validate-detail">
<div class="form-subscribe"> <div class="input-box">
<table class="colors_lines_light" border="0" cellspacing="1" cellpadding="5" align="center">
<tbody>
<tr >
<td width="95">Title:</td>
<td width="282"><select id="subtitle" name="subtitle" title="subtitle" class="required-entry">
<option value="" selected="selected"></option>
<option value="Mr">Mr</option>
<option value="Ms">Ms</option>
<option value="Mrs">Mrs</option>
<option value="Sir">Sir</option>
<option value="Lord">Lord</option>
<option value="Dr">Dr</option>
<option value="Prof">Prof</option>
<option value="Rev">Rev</option>
</select>
</td>
</tr>
<tr >
<td width="95">First Name:</td>
<td width="282"><input type="text" name="subfirstname" id="subfirstname" size="30" maxlength="50" class="input-text required-entry" /></td>
</tr>
<tr >
<td width="95">Last Name:</td>
<td width="282"><input type="text" name="sublastname" id="sublastname" size="30" maxlength="50" class="input-text required-entry" /></td>
</tr>
<tr >
<td width="95">Email Address</td>
<td width="282"> <input type="text" name="email" id="newsletter" title="Sign up for our newsletter" class="input-text required-entry validate-email" size="30" maxlength="100" ></td>
</tr>
<tr >
<td width="95"> </td>
<td width="282"><button type="submit" title="Submit" class="button" ><span><span>Sign Up</span></span></button>
</td>
</tr>
</tbody>
</table>
</div> </div></form>
<script type="text/javascript">
//<![CDATA[
var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail');
new Varien.searchForm('newsletter-validate-detail', 'newsletter', '');
//]]>
</script>
Update grid.php in the following location
Location: app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/
find the function protected function _prepareColumns() { and add the below
$this->addColumn('subtitle', array(
'header' => Mage::helper('newsletter')->__('Subscriber Title'),
'index' => 'subscriber_title',
'default' => '----'
));
$this->addColumn('subfirstname', array(
'header' => Mage::helper('newsletter')->__('Subscriber First Name'),
'index' => 'subscriber_firstname',
'default' => '----'
));
$this->addColumn('sublastname', array(
'header' => Mage::helper('newsletter')->__('Subscriber Last Name'),
'index' => 'subscriber_lastname',
'default' => '----'
));
update the SubscriberController.php in the below location
Location for update: app/code/core/Mage/Newsletter/controllers/
find the function public function newAction() {
and replace
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
add the below
if ($this->getRequest()->getPost('subtitle'))
{
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
$subtitle = (string) $this->getRequest()->getPost('subtitle');
$subscriber->setSubscriberTitle($subtitle);
}
if ($this->getRequest()->getPost('subfirstname'))
{
$subfirstname = (string) $this->getRequest()->getPost('subfirstname');
$subscriber->setSubscriberFirstname($subfirstname);
}
if ($this->getRequest()->getPost('sublastname'))
{
$sublastname = (string) $this->getRequest()->getPost('sublastname');
$subscriber->setSubscriberLastname($sublastname);
}
$status = Mage::getModel('newsletter/subscriber')->subscribe($email,$subtitle, $subfirstname, $sublastname);
update the Subscriber.php in the below locations
Location : app/code/core/Mage/Newsletter/Model/
find function
public function subscribe($email)
and replace
public function subscribe($email,$subtitle=null, $subfirstname=null, $sublastname=null)
in this function find
$this->setSubscriberEmail($email);
add below following
$this->setSubscriberTitle($subtitle);
$this->setSubscriberFirstname($subfirstname);
$this->setSubscriberLastname($sublastname);
Finally update the magento database,
Now open the magento database and open the "newsletter_subscribers".
Add the extra column what you want fields in the newsletter. Here we added three fields like subscriber_title, subscriber_firstname, subscriber_lastname
Hope this may be helpful. please share and provide suggestion to improve. thanks
We have provided solution to add custom input fields in magento newsletter module. How to add the custom input fields on newsletter section Title, Firstname, lastname, email. Also we implemented newsletter in magento page.
We need to follow the below steps,
Create newsletter form in html format
<form action="http://websitename,com/newsletter/subscriber/new/" method="post" id="newsletter-validate-detail">
<div class="form-subscribe"> <div class="input-box">
<table class="colors_lines_light" border="0" cellspacing="1" cellpadding="5" align="center">
<tbody>
<tr >
<td width="95">Title:</td>
<td width="282"><select id="subtitle" name="subtitle" title="subtitle" class="required-entry">
<option value="" selected="selected"></option>
<option value="Mr">Mr</option>
<option value="Ms">Ms</option>
<option value="Mrs">Mrs</option>
<option value="Sir">Sir</option>
<option value="Lord">Lord</option>
<option value="Dr">Dr</option>
<option value="Prof">Prof</option>
<option value="Rev">Rev</option>
</select>
</td>
</tr>
<tr >
<td width="95">First Name:</td>
<td width="282"><input type="text" name="subfirstname" id="subfirstname" size="30" maxlength="50" class="input-text required-entry" /></td>
</tr>
<tr >
<td width="95">Last Name:</td>
<td width="282"><input type="text" name="sublastname" id="sublastname" size="30" maxlength="50" class="input-text required-entry" /></td>
</tr>
<tr >
<td width="95">Email Address</td>
<td width="282"> <input type="text" name="email" id="newsletter" title="Sign up for our newsletter" class="input-text required-entry validate-email" size="30" maxlength="100" ></td>
</tr>
<tr >
<td width="95"> </td>
<td width="282"><button type="submit" title="Submit" class="button" ><span><span>Sign Up</span></span></button>
</td>
</tr>
</tbody>
</table>
</div> </div></form>
<script type="text/javascript">
//<![CDATA[
var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail');
new Varien.searchForm('newsletter-validate-detail', 'newsletter', '');
//]]>
</script>
Update grid.php in the following location
Location: app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/
find the function protected function _prepareColumns() { and add the below
$this->addColumn('subtitle', array(
'header' => Mage::helper('newsletter')->__('Subscriber Title'),
'index' => 'subscriber_title',
'default' => '----'
));
$this->addColumn('subfirstname', array(
'header' => Mage::helper('newsletter')->__('Subscriber First Name'),
'index' => 'subscriber_firstname',
'default' => '----'
));
$this->addColumn('sublastname', array(
'header' => Mage::helper('newsletter')->__('Subscriber Last Name'),
'index' => 'subscriber_lastname',
'default' => '----'
));
update the SubscriberController.php in the below location
Location for update: app/code/core/Mage/Newsletter/controllers/
find the function public function newAction() {
and replace
$status = Mage::getModel('newsletter/subscriber')->subscribe($email);
add the below
if ($this->getRequest()->getPost('subtitle'))
{
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
$subtitle = (string) $this->getRequest()->getPost('subtitle');
$subscriber->setSubscriberTitle($subtitle);
}
if ($this->getRequest()->getPost('subfirstname'))
{
$subfirstname = (string) $this->getRequest()->getPost('subfirstname');
$subscriber->setSubscriberFirstname($subfirstname);
}
if ($this->getRequest()->getPost('sublastname'))
{
$sublastname = (string) $this->getRequest()->getPost('sublastname');
$subscriber->setSubscriberLastname($sublastname);
}
$status = Mage::getModel('newsletter/subscriber')->subscribe($email,$subtitle, $subfirstname, $sublastname);
update the Subscriber.php in the below locations
Location : app/code/core/Mage/Newsletter/Model/
find function
public function subscribe($email)
and replace
public function subscribe($email,$subtitle=null, $subfirstname=null, $sublastname=null)
in this function find
$this->setSubscriberEmail($email);
add below following
$this->setSubscriberTitle($subtitle);
$this->setSubscriberFirstname($subfirstname);
$this->setSubscriberLastname($sublastname);
Finally update the magento database,
Now open the magento database and open the "newsletter_subscribers".
Add the extra column what you want fields in the newsletter. Here we added three fields like subscriber_title, subscriber_firstname, subscriber_lastname
Hope this may be helpful. please share and provide suggestion to improve. thanks
5 comments:
i try to use your code and follow all the steps but subscriber name not showing in admin side
Hi there, I have tried the same instructions and have come up against the same issue as the person above. The first name and last name are not being saved within the database and therefore are not displaying within the admin system.. Is there anything else needed for the new data to be saved to the DB? I look forward to hearing from you. Regards. Lee.
its save in db but not displaying in admin grid
Its not saving in db so not displaying in admin.
Thanks for the best blog.it was very useful for me.keep sharing such ideas in the future as well.this was actually what i was looking for,and i am glad to came here!
magento development company in bangalore
Post a Comment