Preço Apenas para Usuários Cadastrados no M1

Escrito por Mario SAM

Obrigar o usuário a se cadastrar no site para visualizar o preço dos produtos não é uma estratégia muito amigável. Também não impede sua concorrência de se cadastrar no site para acompanhar sua estratégia de preços.

Porém, se você oferece diversas vantagens para quem se cadastrar no site, como preço especial, trabalha sua lista de clientes de forma inovadora através de promoções e newsletter. Então este recurso pode se transformar em uma poderosa ferramenta de marketing. 

O Quê, Como, e Onde?

O que faremos é algo relativamente simples. Vamos personalizar o arquivo de template XML responsável por organizar as páginas de apresentação dos produtos, e vamos controlar as informações que devem ou não ser exibidas.

Como será feito? Utilizando as tags customer_logged_in e customer_logged_out do Magento. Essas tags verificam se o usuário esta logado ou não no site, e informa ao template o que deve ser feito nessas situações.

<customer_logged_out>
    ...aqui dentro colocamos nossas ações...
</customer_logged_out>

Onde serão feitas as alterações? Todas no arquivo catalog.xml que é quem controla a exibição dos produtos nas páginas. Ele quem carrega os blocos responsáveis por apresentar preços e o botão “comprar”. Então para dar início aos trabalhos abra o arquivo:

app/design/frontend/default/default/layout/catalog.xml

Se você não encontrar este arquivo em default/default, faça uma cópia do arquivo que fica em base/default.

O que precisamos esconder?

O botão comprar com sua caixa de quantidade, e o preço do produto, certo!?

No arquivo catalog.xml você encontra os blocos product.info.addtocart e product.info.simple. Que correspondem respectivamente pelo bloco do botão comprar e pelo bloco que exibe o preço.

Mas atenção aqui, product.info.simple se refere ao preço do produto simples (simple). Para ocultar o preço de outros tipos de produtos, você precisa usar a referência correspondente, exemplo:

product.info.configurable para produtos configuráveis, product.info.virtual para produtos digitais, etc.

A tag xml que usaremos para “esconder” os blocos é o remove. exemplo:

<remove name="nome.do.bloco"></remove>

Não mostre, mas informe!

Ok. Você não quer exibir os preços dos produtos, mas ao menos informe ao usuário que ele deve se cadastrar para visualizar os preços e efetuar a compra.

Então, além de remover os blocos que precisamos ocultar dos usuários não cadastrados, precisamos inserir uma nova página no leiaute, com as informações e procedimentos que o visitante deve realizar.

Comece criando uma nova página (phtml) em:

design/frontend/default/default/template/catalog/product/view/addtocart_noprice.phtml

Adicione neste arquivo a mensagem que deseja mostrar aos usuários não cadastrados no site. Depois basta entrar no catalog.xml e criar um bloco para esta nova página e enviar seu conteúdo para uma referência da página, como mostrado abaixo:

<reference name="product.info.extrahint">
    <block type="page/html_pager" name="product.info.noprice" as="noprice" template="catalog/product/view/addtocart_noprice.phtml"/>
</reference>

Dica! O post Tradução Estendida mostra como devem ser criados os novos textos/conteúdo das páginas.

Resumindo…

Agora que já expliquei todas as etapas do processo, preciso falar rapidamente sobre a lógica utilizada.

Por padrão, o Magento já mostra o preço e o botão comprar para qualquer vistante da loja, esteja ele logado ou não.

Então quando o usuário estiver logado no site, não precisamos fazer absolutamente nada, basta seguir o procedimento padrão do sistema. Iremos atuar apenas quando o usuário não estiver logado no site, dito isso, e usando os códigos mostrados anteriormente, temos finalmente:

<customer_logged_out>
    <reference name="product.info.extrahint">
        <block type="page/html_pager" name="product.info.noprice" as="noprice" template="catalog/product/view/addtocart_noprice.phtml"></block>
    </reference>
    <remove name="product.info.addtocart"></remove>
    <remove name="product.info.simple"></remove>
</customer_logged_out>

Sim. Basta adicionar esse código ao arquivo catalog.xml, salvar, e testar.

Quer ver o preço? Cadastre-se!

Um bônus para finalizar o post. Além das ações acima descritas, de retirar blocos e exibir mensagem personalizada. Procure facilitar a vida do seu visitante.

Nesse caso, você pode inserir na coluna da direita, uma caixa de login. Já que o usuário é obrigado a se cadastrar, já coloque o formulário à disposição quando ele não estiver logado no site. Código final:

<customer_logged_out>
    <reference name="right">
        <block type="customer/form_login" name="customer_form_mini_login" before="-" template="customer/form/mini.login.phtml"></block>
    </reference>
    <reference name="product.info.extrahint">
        <block type="page/html_pager" name="product.info.noprice" as="noprice" template="catalog/product/view/addtocart_noprice.phtml"></block>
    </reference>
    <remove name="product.info.addtocart"></remove>
    <remove name="product.info.simple"></remove>
</customer_logged_out>

Espero que estas dicas lhe ajudem de alguma forma a vender mais.

Sucesso!

O Autor

Mario SAM

Desenvolvedor Magento com certificação M1 Developer e M1 FrontEnd Developer. Graduado em Web Design e Programação, pós-graduado em Gestão de Projetos e TI. Não sou matemático mas estou aqui para somar.