Como direcionar o cliente para o carrinho no detalhe do produto no Opencart 1.5

  • Olá,

    Estou escrevendo este post porque tem alguns lojistas que já notaram um certo problema com a forma como o OpenCart adiciona o produto no carrinho. Quando você esta na tela de detalhe do produto de algum produto e clica em “comprar”, não é direcionado para a página do carrinho, como esperado.

    A resposta que o sistema da ao cliente é bem sutil, e pode acontecer de muitos clientes não verem e aguardarem a página mudar (já recebi relato disso na prática). Dependendo da pessoa que está tentando comprar poderá achar que a loja está com algum problema. Isso porque depois de clicar em “comprar” permaneceu na mesma página, e teve pequenas mudanças visuais como mostro na imagem acima. Hoje em dia, quanto mais fácil para o cliente, melhor é para seu negócio. Colocando ícones grandes, aplicando efeito de hover (efeito quando passa o mouse). Já foi comprovado que quando há respostas à ações dos clientes, há uma maior satisfação e sensação de controle. Por esse motivo, às vezes é melhor abrir mão de certos efeitos, principalmente se o hábito do cliente é esperar ser levado para a tela do carrinho, principalmente porque a maior parte das lojas fazem isso. Quebrar padrões nem sempre é bom, quando se trata de uma loja virtual.

    Nas versões 1.4.9.x era possível manter dessa forma ou fazer com que ao clicar em “comprar” direcionasse o cliente para a página do carrinho. Porém na versão 1.5.1.1, até o momento pelo menos não encontrei essa opção. Então para quem deseja que ao clicar em “comprar” mude para a tela do carrinho (como acontece na maioria das lojas), mostrarei como fazer isso pelo código.

    Alteração pagina product.tpl apenas correspondente ao botão comprar do detalhe do produto:

    Para mudar isso entre na página product.tpl que fica no caminho catalog/view/theme/seu_template/template/product/product.tpl.
    No trecho abaixo (no template padrão da versão 1.5.1.1 começa na linha 308) só adicione a linha em vemelho:

    <script type="text/javascript"><!--
    
    $('#button-cart').bind('click', function() {
    
    $.ajax({
    
    url: 'index.php?route=checkout/cart/update',
    
    type: 'post',
    
    data: $('.product-info input[type=\'text\'], .product-info input[type=\'hidden\'], .product-info input[type=\'radio\']:checked, .product-info input[type=\'checkbox\']:checked, .product-info select, .product-info textarea'),
    
    dataType: 'json',
    
    success: function(json) {
    
    $('.success, .warning, .attention, information, .error').remove();
    
    if (json['error']) {
    
    if (json['error']['warning']) {
    
    $('#notification').html('<div class="warning" style="display: none;">' + json['error']['warning'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
    
    $('.warning').fadeIn('slow');
    
    }
    
    for (i in json['error']) {
    
    $('#option-' + i).after('<span class="error">' + json['error'][i] + '</span>');
    
    }
    
    }
    
    if (json['success']) {
    
    $('#notification').html('<div class="attention" style="display: none;">' + json['success'] + '<img src="catalog/view/theme/default/image/close.png" alt="" class="close" /></div>');
    
    $('.attention').fadeIn('slow');
    
    $('#cart_total').html(json['total']);
    
    $('html, body').animate({ scrollTop: 0 }, 'slow');
    
    location.href ="index.php?route=checkout/cart";
    
    }
    
    }
    
    });
    
    });

    Alteração pagina cart.php que terá efeito em todos botão comprar da loja:

    Caso você queira que ao clicar “comprar” seja na página de detalhe do produto ou nas categorias e demais páginas precisará fazer uma alteração na página catalog/controller/checkout/cart.php.

    Abra o arquivo e localize a linha 355 (dependendo da versão pode ser outra linha) e apague a linha toda. O conteudo dela é:

    $json['success'] = sprintf($this->language->get('text_success'), $this->url->link('product/product', 'product_id=' . $this->request->post['product_id']), $product_info['name'], $this->url->link('checkout/cart'));

    No lugar dela coloque a linha em vermelho a seguir:

    $json['redirect'] = "index.php?route=checkout/cart";

    Com isso toda vez que clicar em compra seja lá qual for a página mandará você para o carrinho.

    Download das Alterações para vQmod:

    Segue a alteração em vQmod (conheça mais sobre o vQmod acessando este link). É só adicionar o aquivo XML que estou passado na pasta “xml” de seu vQmod. Caso tenha dúvidas para instalar o vQmod, acesse aqui.

    Baixar XML simples

    Baixar XML para todas as paginas

    Espero ter ajudado com essa dica.

    Se inscreva em nosso curso de OpenCart que logo abriremos as inscrições.

    Abraço.



    Related Posts Plugin for WordPress, Blogger...




10 Comentarios

  • Obrigado! Também acho que essa notificação confunde o usuário. Funcionou perfeitamente aqui na versão 1.5.1.1!

  • Parabens e Obrigado pela ajuda, realmente muito Util

  • Parabéns! Mas tenho uma crítica para fazer. Ele funcionou perfeitamente na versão atual (1.5.1.3), porém se você clicar em “COMPRAR” na página do produto, ele encaminha p/carrinho e abre a página do carrinho. Se você clicar fora da página do produto, por exemplo, na lista dos produtos nos “Departamentos” ou no página principal em “novidades”, ele só faz adicionar no carrinho, não se encaminha p/o carrinho.

    Usei a forma que você indicou, instalando o vqmod, que realmente, muito útil e funcional esta forma de modificar o código. Parabéns novamente!

  • Olá Jeann, localizei o que esta faltando! Só que tem um problema! O vqmod não está adicionando a linha desejada no arquivo. Não sei por que, tentei de várias formas. Bem, a segunda parte do arquivo para direcionar o cliente para o carrinho clicando em “comprar” em qualquer ambiente do site:

    Explicando o código:

    Este texto é para ser adicionado no outro XML, entre ” ” e logo após . Após colar o texto acima, ele localiza no arquivo catalog/view/javascript/common.js a linha descrita e adiciona logo após. Este index=”1″, é porque o arquivo tem 3 textos iguais a este da busca, só adiciona após o primeiro index.

    Vejo que ele nem tentou substituir porque não aparece nenhum arquivo no diretório “vqcache” do vqmod.

    Abraço!

  • Olá Adriano,

    Agradeço o elogio e a crítica.

    Sobre a critica que fez. Porem na verdade não é o objetivo do post que todos os botões comprar mande o usuario para o carrinho. Essa alteração só faz isso apenas na pagina de detalhes do produto. Fiz isso porque pode ter casos de lojas que por exemplo vendem cesta onde é necessário colocar vários itens no carrinho e talvez não seja legal que ao clicar em comprar mande o cliente para o carrinho. Mas quando ele esta vendo os detalhes do produto e já viu as imagens grande, a descrição nesse caso acho extremamente necessário mandar o cliente para o carrinho.

    Acredito que possa ser bom para algumas lojas que sempre que clicar no comprar mande o usuário para o carrinho. Nesse caso atualizei o post para quem quer que todos os botões comprar ao ser clicado mande para o carrinho.

    Sobre o problema que esta enfrentando teria 3 possíveis motivos de não estar sendo aplicado sua alteração.

    1º pelo que percebi em alguns testes anteriores o vqmod não altera arquivos que não seja php, por isso ele não adiciona nada no arquivo common.js;
    2º Você não pode ter 2 arquivos XML que tenha a mesma tag apontando para o mesmo arquivo. Isso gera conflito. Quando isso ocorrer você tem de centralizar em apenas 1 xml do qual já esteja modificando o arquivo destino.
    3º a codificação do arquivo xml precisa estar em UTF-8, eu deixei ANSI em alguns e quando esses tinham acentos dava problema. Mas ao mudar o arquivo para UTF-8 e manter os acentos deu certo.

    No seu caso acredito que seu problema seja o primeiro caso que citei.

    Abraço e obrigado por acompanhar o blog.

  • Usei aqui na versao 1.5.1.3 e tambem funcionou certim
    tuto muito bom.
    Exelente.

  • Estou so com um problema que nao tinha percebido
    quando tenho um produto tipo capacete que tem tamanhos
    quando coloco comprar ele me leva para a pagina onde adiciono o numero do capacete
    ou tamanho entao coloco o numero e coloco comprar neste momento ele nao faz nada
    mas se atualizo a pagina ele vai para o carrinho como resolveria isto:?

  • Olá Wenderson,

    Agradeço por ter reportado esse erro. Acabei de acertar, pode baixar o zip “todos_prod_1.0.1.zip”. Se achar algum outro problema me avise para que eu possa melhorar a alteração.

    Abraço.

  • Rapaz que maravilha isso fiquei pesquisando muito tempo isso , olha não sei como te ajudar me diga ai ? tem algum modulo pago para eu comprar e te ajudar vc salva a vida de muita gente com esse blog aqui parabéns aguardo resposta !

  • Olá Alexandre!

    Poxa, muito obrigado mesmo! Comentários como esse que deixou é muito importante e gratificante. Os módulos pago que tenho atualmente são 3 segue os links:

    Módulo para OpenCart – Cor de pedido por Status;
    Módulo para OpenCart – Avise-me quando disponível;
    Módulo de desconto por forma de pagamento no Opencart;

    Tenho mais alguns, porem não esta redondo ainda.

    Forte abraço!

Comente aqui

* Nome, Email e comentário são obrigatórios