terça-feira, 30 de abril de 2013

Dica: Alterar mensagem de boas-vindas de acordo com o gênero do cliente logado


Boa Tarde Pessoal!
Hoje vou postar uma dica muito útil sobre como alterar aquela mensagem de boas-vindas, que fica no cabeçalho da loja, de acordo com o gênero do cliente logado (masculino ou feminino).


Ao instalar o Magento, a mensagem padrão de boas-vindas é: "Default welcome msg!", que, dependendo da tradução, fica: "Mensagem de boas-vindas!".


Para alterar essa mensagem, basta ir em Sistema-> Configuração-> GERAL/Tema, aba Cabeçalho, campo Mensagem de Boas-Vindas.
Quando um cliente se cadastra e loga na sua loja, a mensagem muda para: "Welcome, Customer Name!" que, dependendo da tradução, fica: "Bem-Vindo, Nome do Cliente!"



Para alterar essa mensagem, você pode simplesmente traduzi-lá (inline ou no arquivo .csv), mas esse não é o foco dessa dica. Ás vezes, como no meu caso, é preciso diferenciar a mensagem de acordo com o gênero do usuário logado. Nessa dica, irei usar como exemplo a mensagem padrão:"Bem-Vindo, Nome do Cliente!", faça as alterações de acordo com a sua necessidade!

1º - Copie o arquivo Header.php de app-> code-> core-> Mage-> Page-> Block-> Html
Para app-> code-> local-> Mage-> Page-> Block-> Html
Criando os diretórios necessários.

2º - Abra o arquivo anteriormente copiado e procure o seguinte trecho:

        if (empty($this->_data['welcome'])) {
            if (Mage::isInstalled() && Mage::getSingleton('customer/session')->isLoggedIn()) {
                $this->_data['welcome'] = $this->__('Welcome, %s!', $this->escapeHtml(Mage::getSingleton('customer/session')->getCustomer()->getName()));
            } else {
                $this->_data['welcome'] = Mage::getStoreConfig('design/header/welcome');
            }
        }


Substitua ele todo por esse:

        if (empty($this->_data['welcome'])) {
            if (Mage::isInstalled() && Mage::getSingleton('customer/session')->isLoggedIn() && Mage::getSingleton('customer/session')->getCustomer()->getGender() == 1) {
                $this->_data['welcome'] = $this->__('Bem-vindo, %s!', $this->escapeHtml(Mage::getSingleton('customer/session')->getCustomer()->getName()));
            }  
        elseif (Mage::isInstalled() && Mage::getSingleton('customer/session')->isLoggedIn() && Mage::getSingleton('customer/session')->getCustomer()->getGender() == 2) {
        $this->_data['welcome'] = $this->__('Bem-vinda, %s!', $this->escapeHtml(Mage::getSingleton('customer/session')->getCustomer()->getName()));
            } else {
                $this->_data['welcome'] = Mage::getStoreConfig('design/header/welcome');
            }
        }


Explicando:

1 e 2 são os códigos (no banco de dados) de Masculino e Feminino, respectivamente;

'Bem-vindo, %s!' é a mensagem setada para o cliente com o gênero masculino (1);

'Bem-vinda, %s!' é a mensagem setada para a cliente com o gênero feminino (2);

%s é a variável que exibe o nome do cliente logado.

Seguindo todos os passos corretamente, ficará mais ou menos assim:

Cliente do gênero masculino logado

 Cliente do gênero feminino logado


Observações:

- Para que essas alterações funcionem perfeitamente, é necessário que a escolha do gênero seja obrigatória no cadastro do cliente. Para isso, vá em Sistema-> Configuração-> CLIENTES/ Configurações, guia Opções de Nome e Endereço e escolha a opção Obrigatório no campo Exibir Sexo;
- Caso as opções Feminino e Masculino não estejam traduzidas na sua loja, será necessário alterar diretamente no banco de dados, na tabela eav_attribute_option_value.

Então é isso, qualquer dúvida, sugestão ou correção, deixe um comentário!
=)

7 comentários:

  1. Seria possível a realização conforme o período antes de logar?
    Por ex. Bom Dia! Boa tarde! Boa Noite!

    ResponderExcluir
    Respostas
    1. Olá Flávio!
      Interessante a sua dúvida!
      Acho isso seria possível sim, acrescentando condições no mesmo arquivo alterado nessa dica.
      Vou pesquisar um pouco e testar aqui.
      Qualquer coisa, posta no blog!
      =)

      Excluir
    2. Flávio, tenta substituir aquele trecho do 2º passo por esse:

      $hour = date("H", Mage::getModel('core/date')->timestamp(time()));

      if (empty($this->_data['welcome'])) {
      if (Mage::isInstalled() && Mage::getSingleton('customer/session')->isLoggedIn()) {
      if ($hour < 12){
      $this->_data['welcome'] = $this->__('Bom Dia, %s!', $this->escapeHtml(Mage::getSingleton('customer/session')->getCustomer()->getName()));
      }elseif ($hour >= 12 && $hour < 18){
      $this->_data['welcome'] = $this->__('Boa Tarde, %s!', $this->escapeHtml(Mage::getSingleton('customer/session')->getCustomer()->getName()));
      }elseif ($hour >= 18){
      $this->_data['welcome'] = $this->__('Boa Noite, %s!', $this->escapeHtml(Mage::getSingleton('customer/session')->getCustomer()->getName()));}
      } else {
      $this->_data['welcome'] = Mage::getStoreConfig('design/header/welcome');
      }
      }

      Excluir