Skip to content

Prestashop – Adicionar Banner Ebit

1. Criar override do controller OrderConfirmationController

Por padrão, a página de confirmação de pedido do Prestashop não possui todos os dados que o Ebit considera obrigatórios. Por isso, precisamos criar um override do controller de confirmação de pedido para passar esses dados ao template.

Para isso, copie o arquivo “controllers/front/OrderConfirmationController.php” para dentro de “override/controllers/front/”.

Feito a cópia, edite o arquivo de override e deixe a função initContent da seguinte forma:

public function initContent()
    {
        parent::initContent();
        $cart = new Cart($this->id_cart, $this->context->language->id);
        $order=new Order($this->id_order, $this->context->language->id);
        $products = $cart->getProducts();

        $this->context->smarty->assign(array(
            'is_guest' => $this->context->customer->is_guest,
            'HOOK_ORDER_CONFIRMATION' => $this->displayOrderConfirmation(),
            'HOOK_PAYMENT_RETURN' => $this->displayPaymentReturn(),
        ));

        $this->context->smarty->assign(array(
            'id_order' => $this->id_order,
            'products' => $products,
            'totalSpent' => number_format($order->total_paid, 2, '.', ''),
            'deliveryTax' => number_format($order->total_shipping, 2, '.', ''),
            'reference_order' => $this->reference,
            'id_order_formatted' => sprintf('#%06d', $this->id_order),
            'email' => $this->context->customer->email
        ));

        if ($this->context->customer->is_guest) {

            /* If guest we clear the cookie for security reason */
            $this->context->customer->mylogout();
        }

        $this->setTemplate(_PS_THEME_DIR_.'order-confirmation.tpl');
    }

Com essa função alterada, agora passaremos ao template de confirmação de pedido os dados de Produtos, Total gasto, e Taxa de entrega. Após salvar seu arquivo de override, apague o arquivo “cache/class_index.php”, para que seu Prestashop passe a ler  a classe de OrderConfirmation do seu override.

2. Criar template para o banner Ebit

Dentro do tema do Prestashop, crie um arquivo com o nome “order-confirmation-ebit-script.tpl”. Dentro desse arquivo, inclua o seguinte conteúdo:

{assign "storeId" "seuStoreId"}


{foreach $products as $product}
    {assign var="counter" value=$counter+1}
    {if $counter == 1}
        {assign var="quantity" value="`$product['quantity']`"}
        {assign var="value" value="`$product['total']`"}
        {assign var="productName" value="`$product['name']`"}
        {assign var="sku" value="`$product['reference']`"}
    {else}
        {assign var="quantity" value="`$quantity`|`$product['quantity']`"}
        {assign var="value" value="`$value`|`$product['total']`"}
        {assign var="productName" value="`$productName`|`$product['name']`"}
        {assign var="sku" value="`$sku`|`$product['reference']`"}
    {/if}
{/foreach}


<a id="bannerEbit"></a>

<param id="ebitParam"
       value="email={$cookie->email|escape:'htmlall':'UTF-8'}&
  deliveryTax={$deliveryTax}&
  mktSaleId=0&
  totalSpent={$totalSpent}&
  value={$value}&
  quantity={$quantity}&
  productName={$productName}&
  transactionId={$id_order}&
  sku={$sku}&
  buscapeId={$storeId}&
  storeId={$storeId}&
  plataform=0"
/>

{literal}<script type='text/javascript' id="getSelo" src='https://imgs.ebit.com.br/ebitBR/selo-ebit/js/getSelo.js?{/literal}{$storeId}{literal}&lightbox=true'></script>{/literal}

Edite a variável “storeId” adicionando o id de sua loja no Ebit.

No painel do Prestashop, é necessário que a opção “Mover o JavaScript para o final” localizada dentro de “Ferramentas -> Performance” esteja desativada. Isso porque quando essa opção está ativa, ela remove o id getSelo da tag Script que adicionamos ao template, e sem esse id o banner não carrega.

3. Importe o template do banner Ebit para dentro do template de confirmação de pedido

Edite o arquivo “SeuTema/order-confirmation.php” e inclua a seguinte linha ao final do arquivo:

{include file="$tpl_dir./order-confirmation-ebit-script.tpl"}

Terminado esses 3 passos, seu Banner Ebit já deverá estar rodando na página de confirmação de pedido.

Referência:

http://developer.buscape.com.br/portal/ebit/banner/como-implementar

https://www.prestashop.com/forums/topic/554008-products-id-in-orderconfirmationtpl/

Published inPrestashop

11 Comments

  1. Boa tarde Bruno, tudo bem?
    Fiz tudo certinho como seu passo a passo, duas dúvidas se puder me ajudar.

    Primeiro:
    Ali na hora de criar o “order-confirmation-ebit-script.tpl”, eu altero o s dois {assign “storeId” “seuStoreId”}, eu altero os dois valores pelo meu ID?

    Segundo:
    Fazendo exatamente como está ai, meu score ficou abaixo do recomendado, sabe algo para solucionar?

    Muito obrigado!

    • brunogui brunogui

      Bom dia Marco, tudo bem e você?

      no {assign “storeId” “seuStoreId”}, você irá mudar apenas o “seuStoreId” pelo seu id do Ebit. “storeId” é o nome da váriavel que estamos criando para utilizar mais abaixo no código.

      Quanto ao seu score, a página do Ebit geralmente traz informações do que está faltando para que o score fique melhor. Você consegue me mandar um print screen da página do ebit que mostra seu score por e-mail? Se puder, darei uma olhada para ver o que pode estar acontecendo. Meu e-mail é bruno.gui@gmail.com .

      Atenciosamente

  2. Bom dia Bruno,

    Agora fiz exatamente como está seu passo a passo, mas quando vai jogar para a confirmação do pedido, a página se perde.

    Esta página não está funcionando

    http://www.suplementosimports.com.br não consegue atender a esta solicitação no momento.
    HTTP ERROR 500

    Sabe o que pode ser?

    • brunogui brunogui

      Erro 500 significa que tem algum erro de código na sua página. Você precisa verificar o arquivo de erro do do seu Web server para identificar o que está ocorrendo.

  3. Usei seu script e funcionou perfeito muito obrigado.

  4. Daniel Daniel

    Grande artigo, obrigado!!

    Só uma dica, no override não precisa usar todas as funções, basta usar somente a initContent. Após o override não esqueça de apagar o arquivo /cache/class_index.php para que o override entre em funcionamento.

    Minha override ficou assim:

    class OrderConfirmationController extends OrderConfirmationControllerCore
    {

    /**
    * Assign template vars related to page content
    * @see FrontController::initContent()
    */
    public function initContent()
    {
    parent::initContent();
    $cart = new Cart($this->id_cart, $this->context->language->id);
    $order=new Order($this->id_order, $this->context->language->id);
    $products = $cart->getProducts();

    $this->context->smarty->assign(array(
    ‘is_guest’ => $this->context->customer->is_guest,
    ‘HOOK_ORDER_CONFIRMATION’ => $this->displayOrderConfirmation(),
    ‘HOOK_PAYMENT_RETURN’ => $this->displayPaymentReturn(),
    ));

    $this->context->smarty->assign(array(
    ‘id_order’ => $this->id_order,
    ‘products’ => $products,
    ‘totalSpent’ => number_format($order->total_paid, 2, ‘.’, ”),
    ‘deliveryTax’ => number_format($order->total_shipping, 2, ‘.’, ”),
    ‘reference_order’ => $this->reference,
    ‘id_order_formatted’ => sprintf(‘#%06d’, $this->id_order),
    ‘email’ => $this->context->customer->email
    ));

    if ($this->context->customer->is_guest) {

    /* If guest we clear the cookie for security reason */
    $this->context->customer->mylogout();
    }

    $this->setTemplate(_PS_THEME_DIR_.’order-confirmation.tpl’);
    }

    }

    • brunogui brunogui

      Muito obrigado pela dica Daniel!

  5. Parabéns pela publicação Bruno, me ajudou muito.

    Estou tendo apenas um problema, quando clico no Banner do E-bit recebo a mensagem de Nenhum parâmetro informado. Parece que ele não está identificado o ID da Loja.

    No arquivo order-confirmation-ebit-script.tpl é necessário trocar apenas a primeira linha onde estão os “X” correto?

    {assign “XXXXX” “seuStoreId”}

    Obrigado pela ajuda.

    • brunogui brunogui

      Isso Rafael, apenas aonde tem o “XXXXX”, deve ser substituido pelo ID de sua Loja no Ebit.

  6. Vinicius Lima Vinicius Lima

    Boa tarde Bruno! Queria parabeniza-lo pela iniciativa e agradecer também! Vamos la fiz os 3 passos mas não aparece o banner no site, teria alguma coisa a ver com a versão do presta shop? O meu e a versão 1.6.1.5, desativei a opção “Mover o JavaScript para o final”. mas não aparece nada, nenhum errinho também desde já gradeço a atenção!

    • brunogui brunogui

      Boa tarde Vinicius.

      A implementação que eu fiz desse Banner, foi em um Prestasho 1.6.1.4. Acredito que não deveria ter nenhum problema com a versão que você está utilizando, mas não posso lhe garantir.

      Veja se o script JS do Ebit foi carregado corretamente na sua página, executando “$(‘#getSelo’)” no console de seu navegador. Tente também limpar o cache do seu PrestaShop pra ver se resolve.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *