Olá pessoal!
No Magento apenas o campo e-mail é apresentado no formulário para que o visitante assine o boletim informativo da loja e as demais informações, como nome, só são exibidas se o assinante é um cliente. Isso dificulta a vida dos lojistas que querem um contato mais pessoal com seus visitantes, afinal, estes podem se tornar futuros clientes. No tutorial de hoje irei explicar como acrescentar o campo nome no formulário da newsletter, salvá-lo no banco e visualizá-lo no painel administrativo. À partir dele, você poderá inserir quais campos quiser! Agora chega de enrolação e vamos ao passo-a-passo:
1º Passo - Adicionar a coluna subscriber_name na tabela newsletter_subscriber:
Acesse o banco de dados via phpMyAdmin;
Procure a tabela newsletter_subscriber;
Adicione a coluna subscriber_name (tipo: varchar, tamanho:50).
2º Passo - Adicionar a caixa de texto no frontend para o preenchimento do nome e inserir as legendas necessárias:
Abra o arquivo subscribe.phtml (app->design->frontend->default->SeuTema->template->newsletter) que é responsável pelo template da newsletter;
Procure a seguinte linha:
<input type="text" name="email" id="newsletter" title="<?php echo $this->__('Sign up for our newsletter') ?>" class="input-text required-entry validate-email" />
E substitua pelo seguinte código:
<?php echo 'Nome:' ?><input type="text" name="subscriber_name" id="newsletter" title="Nome" class="input-text required-entry"/>
<?php echo 'E-mail:' ?> <input type="text" name="email" id="newsletter" title="E-mail" class="input-text required-entry validate-email" />
O resultado será o seguinte:
Mas ainda não acabou. Agora nós temos que salvar o nome digitado no banco e exibi-lo no admin. Para isso vamos criar um observer!
3º Passo - Adicionar o Observer antes do cadastro da newsletter ser salvo:
-Abra o arquivo config.xml (app->code->core->Mage->Newsletter->etc) e procure a abertura da tag <global>;
Logo abaixo dela, insira o seguinte código:
<events>
<newsletter_subscriber_save_before>
<observers>
<newsletter_subscribe_observer>
<class>newsletter/observer</class>
<method>newsletterSubscriberSave</method>
</newsletter_subscribe_observer>
</observers>
</newsletter_subscriber_save_before>
</events>
-Abra o arquivo Observer.php (app->code->core->Mage->Newsletter->Model) e insira o seguinte código antes da chave (}) de fechamento da classe Mage_Newsletter_Model_Observer (no final do arquivo)
public function newsletterSubscriberSave(Varien_Event_Observer $observer)
{
$subscriber = $observer->getEvent()->getSubscriber();
$name = Mage::app()->getRequest()->getParam('subscriber_name');
$subscriber->setSubscriberName($name);
return $this;
}
4º Passo e último - Exibir o nome cadastrado no painel administrativo (Newsletter->Assinaturas de Newsletter):
Abra o arquivo Grid.php (app->code->core->Mage->Adminhtml->Block->Newsletter->Subscriber) e procure o seguinte trecho:
$this->addColumn('type', array(
'header' => Mage::helper('newsletter')->__('Type'),
'index' => 'type',
'type' => 'options',
'options' => array(
1 => Mage::helper('newsletter')->__('Guest'),
2 => Mage::helper('newsletter')->__('Customer')
)
));
Logo abaixo dele, coloque o seguinte código:
$this->addColumn('subscriber_name', array(
'header' => Mage::helper('newsletter')->__('Nome Visitante'),
'index' => 'subscriber_name',
'default' => '----'
));
Feito isso, o nome do visitante cadastrado na newsletter será exibido na coluna Nome Visitante, que ficará logo após o tipo:
Então é isso! Qualquer dúvida, deixe um comentário!
=)
Fonte: Adding a custom field to Magento's subscribtion module
Segui todos os passos porem o nome não eh salvo no banco, fiz o teste de colocar o nome pelo phpmyadmim e apareceu no painel administrativo.
ResponderExcluirOlá Tiago Gomes!
ExcluirDesculpa a demora para responder!
Quanto ao seu problema, na caixa de texto inserida no arquivo subscriber.phtml para que o usuário digitasse o nome, você inseriu na propriedade name o mesmo nome dado a coluna criada na sua tabela?
também estou com esse problema, é como se o método observe não estivesse sendo chamado
ExcluirBoa Tarde!
ExcluirO código funciona, tanto que um usuário do fórum da Comunidade Magento conseguiu fazer. Vocês realmente seguiram à risca todos os passos? Com certeza o erro está no 3º passo, verifiquem se todos os códigos foram inseridos nos locais corretos. Caso queiram entrar em contato pelo e-mail fiquem à vontade: referencia.magento@gmail.com
achei o problema para o meu caso.
ExcluirTodos os módulos que estou modificando coloco dentro da pasta "app/code/local/Mage" que é onde se encontra a pasta "Newsletter". até ai tudo bem pois é padrão do megendo. O estranho é que o magento esta usando o Observer.php da pasta "app/code/local/Mage/Newsletter/Model" e o config.xml da pasta "app/code/core/Mage/Newsletter/etc"
ou seja ele usa o config.xml do core, o o observer.php dos meus módulos sobrescritos em local/mage mesmo minha pasta local contendo o etc/config.xml não entendi isso, era pra ta usando tudo da pasta loca/
sim,PARABÉNS PELO POST ELE É ÚNICO, FAZ UM TEMPO QUE PROCURAVA ISSO. MUITO OBRIGADO
Fico feliz que você tenha encontrado uma solução para o seu problema e também pelo tutorial ter te ajudado de alguma forma!
Excluir=)
Olá,
ResponderExcluirFiz o procedimento exatamente como informado mas o nome do visitante não está sendo salvo.
Por favor tem alguma dica.
Estou usando Magento versão. 1.7.0.2
Olá Edson!
ExcluirO nome da coluna criada no banco de dados é o mesmo do campo adicionado no subscribe.phtml? Já tentou inserir o nome direto no bd? Se sim, ele aparece no painel do magento?
Obrigado pela dica.
ResponderExcluirParabéns,
Exelente tutorial.
Tudo certo agora.
Valeu!
Fico feliz que tenha dado certo!
Excluir=D
Olá!
ResponderExcluirFiz todo o procedimento, mas o nome não está salvando no painel.
Olá Agnes!
ExcluirO nome da coluna criada no banco de dados é o mesmo do campo adicionado no subscribe.phtml? Já tentou inserir o nome direto no bd? Se sim, ele aparece no painel do magento?
Direto no bd, aparece, mas se preencho normal no site não aparece. =S
ResponderExcluirAgnes, verifique se no seu Magento existem os arquivos citados no 3º passo, só que no diretório local:
Excluirapp->code->local->Mage->Newsletter
Se houver, você deverá alterar os que estão lá e não os do core.
Compare os códigos com o do tutorial e verifique se todos estão corretos (principalmente no passo 3). Caso queira entrar em contato pelo e-mail, fique à vontade:
ale.srodrigues@live.com