Como adicionar um campo para o Nome na Newsletter do Magento

Nesse tutorial, vamos aprender como adicionar um novo campo na Newsletter do Magento.

Nesse exemplo, vamos adicionar o campo pra nome, mas pode ser adicionar qualquer outro campo, o procedimento será o mesmo.

A primeira coisa a se fazer é adicionar um novo campo na tabela newsletter_subscriber, adicione um campo com nome de name , tipo VARCHAR (80).

Agora vamos trabalhar na pasta local (app/code/local), iremos copiar os arquivos que vamos modificar.

É indicado fazer dessa forma, porque você preserva o arquivo original, e caso faça upgrade, não perca a modificação feita.

Copie esse arquivo:

/app/code/core/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php

E adicione em:

/app/code/local/Mage/Adminhtml/Block/Newsletter/Subscriber/Grid.php

Caso as pastas não existirem dentro de local, é necessário criá-las, com mesma estrutura.

Vamos agora adicionar esse novo campo pra exibir no admin.

Nesse arquivo copiado (Grid.php), dentro do método _prepareColumns(), adicione depois desse código:

$this->addColumn('subscriber_id', array(
header' => Mage::helper('newsletter')->__('ID'),
'index' => 'subscriber_id'
));

Adicione esse código:

$this->addColumn('name', array(
'header' => Mage::helper('newsletter')->__('Name'),
'index' => ‘name’,
'default' => '----'
));

Agora faremos o mesmo procedimento em outro arquivo, para modificá-lo , copie :

/app/code/core/Mage/Newsletter/controllers/ SubscriberController.php

Para

/app/code/local/Mage/ Newsletter/controllers/ SubscriberController.php

Nesse arquivo, que copiamos, no método newAction(), procure por esse código:

$status = Mage::getModel('newsletter/subscriber')->subscribe($email);

Após desse código, adicione:

if ($this->getRequest()->getPost('name'))
{
$subscriber = Mage::getModel('newsletter/subscriber')->loadByEmail($email);
$name = (string) $this->getRequest()->getPost('name');
$subscriber->setName($name);
$subscriber->save();
}

Agora vamos modificar o template pra adicionar o novo campo.

Verifique se existe esse arquivo no seu tema:

/app/design/frontend/default/_SEU_TEMA_/template/newsletter/subscribe.phtml

Se não existir, copie da pasta base:

/app/design/frontend/base/default/template/newsletter/subscribe.phtml

Para

/app/design/frontend/default/_SEU_TEMA_/template/newsletter/ subscribe.phtml

Antes desse código:

<div class="input-box"><input class="input-text required-entry validate-email" id="newsletter" title="&lt;?php echo $this-&gt;__('Sign up for our newsletter') ?&gt;" type="text" name="email" /></div>

Você modificar, de outra forma, adicionando label, ficando assim:

<div class="block block-subscribe">
<div class="block-title"><strong><span>&lt; ?php echo $this-&gt;__('Newsletter') ?&gt;</span></strong></div>
<form id="newsletter-validate-detail" action="&lt;?php echo $this-&gt;getFormActionUrl() ?&gt;" method="post">
<div class="block-content">
<div class="form-subscribe-header"><label for="newsletter">&lt; ?php echo $this-&gt;__('Sign Up for Our Newsletter:') ?&gt;</label></div>
<div class="input-box"><label for="name">&lt; ?php echo $this-&gt;__('Name') ?&gt;</label>
<input class="input-text required-entry" id="name" title="&lt;?php echo $this-/&gt;__('name') ?&gt;" type="text" name="name" /></div>
<div class="input-box"><label for="newsletter">&lt; ?php echo $this-&gt;__('Email') ?&gt;</label>
<input class="input-text required-entry validate-email" id="newsletter" title="&lt;?php echo $this-/&gt;__('Sign up for our newsletter') ?&gt;" type="text" name="email" /></div>
<div class="actions"><button class="button" title="&lt;?php echo $this-&gt;__('Subscribe') ?&gt;" type="submit"><span><span>&lt; ?php echo $this-&gt;__('Subscribe') ?&gt;</span></span></button></div>
</div>
</form><script type="text/javascript">// < ![CDATA[
//< ![CDATA[
var newsletterSubscriberFormDetail = new VarienForm('newsletter-validate-detail');
// ]]></script>

</div>

Agora, acesse o admin do magento, e limpe o cache.

2017-01-24T20:25:09+00:00

RECEBA DICAS VALIOSAS NO SEU EMAIL

x