Jump to content

Integrar en Prestashop el "Programa Reseñas de Clientes en Google"


Recommended Posts

Hola,

Como muchos ya sabéis, Google ofrece a comerciantes, a través de Merchant center, la participación en su "programa Reseñas de Clientes en Google", esto es, las opiniones de clientes (estrellitas, que luego aparecerán en los anuncios de adwords, etc.). Y también ofrece la integración de la insignia de participación en la tienda. Me parece muy interesante este tema y quería integrar ambas funcionalidades, pero no me queda muy claro cómo hacerlo.

 

Toda ayuda es bienvenida, muchas gracias.

 

Estas son las breves instrucciones que Google envía por email:

 

Para habilitar Reseñas de Clientes en Google
1)    Inicia sesión en tu cuenta de Merchant Center
2)    Selecciona "Programas de Merchant Center" en el menú de tres puntos de la esquina superior derecha.
3)    Haz clic en "Empezar" en la tarjeta de Reseñas de Clientes en Google y acepta el Acuerdo del Programa.
4)    Añade el código de inclusión de la encuesta en tu sitio web.
5)    [Opcional] Añade el código de la insignia en la parte que quieras de tu sitio web. De este modo, la insignia aparecerá en tu sitio web y mostrará a los clientes que formas parte de Reseñas de Clientes en Google, además de tu puntuación como vendedor

 

En Google Merchant ofrecen las dos integraciones:

 

1) INTEGRACIÓN DE FUNCIÓN PARA ACEPTAR EL ENVÍO DE OFERTAS POR CORREO ELECTRÓNICO

Importante: Integrar la función para aceptar el envío de ofertas por correo electrónico es un paso obligatorio para activar Reseñas de Clientes en Google. El programa no funcionará en su sitio web ni ofrecerá encuestas hasta que no realice este paso. Cuando lo haga, Google podrá mostrar una función para aceptar el envío de ofertas de Reseñas de Clientes en Google por correo electrónico en su sitio web y ofrecer encuestas a los clientes que hayan aceptado participar en el programa.

Antes de empezar, compruebe que ha completado los requisitos de integración de la función para aceptar el envío de ofertas por correo electrónico. Las páginas del carrito y de pago deben estar alojadas en el mismo dominio, y la página de confirmación debe estar alojada en su propio dominio. Añada <!DOCTYPE HTML> en la parte superior de cada página web. Tras la verificación, añada el fragmento de código que aparece a continuación en la página de confirmación de pedidos y personalice las variables según sea necesario. Al integrar el fragmento, Google puede mostrar la opción para aceptar el envío de ofertas por correo electrónico de Reseñas de Clientes en Google en su sitio web.

 

Este es el código (Cambiar XXXXXXX por tu ID de Merchant Center):

 

<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>

<script>
window.renderOptIn = function() {
window.gapi.load('surveyoptin', function() {
window.gapi.surveyoptin.render(
{
"merchant_id": XXXXXXX,
"order_id": "ORDER_ID",
"email": "CUSTOMER_EMAIL",
"delivery_country": "COUNTRY_CODE",
"estimated_delivery_date": "YYYY-MM-DD"
});
});
}
</script>

 

2) INTEGRACIÓN DE LA INSIGNIA

Opcional: Use la insignia para mostrar que participa en el programa Reseñas de Clientes en Google y para añadir su valoración como vendedor en su sitio web.

Para empezar, añada el fragmento de código que verá más abajo a cualquier página de su sitio web y personalice las variables de acuerdo con sus necesidades. Una vez añadido, verifique la insignia y el texto adjunto aparecerá correctamente en su sitio web. Nota: Si no hay puntuaciones del vendedor disponibles, aparece el mensaje "No hay puntuaciones disponibles"

 

Este es el código (Cambiar XXXXXXX por tu ID de Merchant Center):

 

<script src="https://apis.google.com/js/platform.js?onload=renderBadge" async defer></script>

<script>
  window.renderBadge = function() {
    var ratingBadgeContainer = document.createElement("div");
    document.body.appendChild(ratingBadgeContainer);
    window.gapi.load('ratingbadge', function() {
      window.gapi.ratingbadge.render(ratingBadgeContainer, {"merchant_id": XXXXXXX});
    });
  }
</script>

 

A ver si hay alguien que lo haya hecho y nos explica cómo integrar estos códigos correctamente.

 

En mi caso, PS 1.6.1.2

Default Bootstrap

 

Muchas gracias de antemano!

Edited by __fito__ (see edit history)
Link to comment
Share on other sites

  • 5 weeks later...

Buenos días.

 

Yo lo he realizado de la siguiente forma, aunque no se si es la más correcta.

 

En primer lugar he duplicado el controlador de confirmación de orden de pedido y lo he metido en override/controllers/front/OrderConfirmationController.php y le he editado lo siguiente:

public function initContent()
    {
        parent::initContent();
		
        $this->context->smarty->assign(array(
            'is_guest' => $this->context->customer->is_guest,
            'HOOK_ORDER_CONFIRMATION' => $this->displayOrderConfirmation(),
            'HOOK_PAYMENT_RETURN' => $this->displayPaymentReturn(),
			'tomorrow', strtotime('+1 day'),
			'reference_order' => $this->reference,
			'email' => $this->context->customer->email
        ));

        if ($this->context->customer->is_guest) {
            $this->context->smarty->assign(array(
                'id_order' => $this->id_order,
                'reference_order' => $this->reference,
                'id_order_formatted' => sprintf('#%06d', $this->id_order),
                'email' => $this->context->customer->email
            ));
            /* If guest we clear the cookie for security reason */
            $this->context->customer->mylogout();
        }

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

Después me he ido a mi plantilla y he editado el fichero order-confirmation.tpl

<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>
	<script>
		window.renderOptIn = function() {
			window.gapi.load('surveyoptin', function() {
			  window.gapi.surveyoptin.render(
				{
					"merchant_id": xxxxxxx,
					"order_id": "{$reference_order}",
					"email": "{$email}",
					"delivery_country": "ES",
					"estimated_delivery_date": "{$tomorrow|date_format:'%Y-%m-%d'}",
					"opt_in_style": "CENTER_DIALOG"
				});
			});
		 }
	</script> 

La integración de la insignia no la he realizado, ya que es opcional

Link to comment
Share on other sites

  • 2 months later...

Hola mAchAcA!

 

Gracias por tu aporte, me ha ayudado mucho :) pero he seguido tus pasos y todo bien menos la fecha que no me la cogía :(

 

Por si a alguien más le ocurre yo lo he solucionado con estos cambios:

 

en el archivo  OrderConfirmationController.php

 

en lugar de: 'tomorrow', strtotime('+1 day'), 

he usado: 'tomorrow' => date('Y-m-d', strtotime('+1 day')),

 

y en el archivo  order-confirmation.tpl

 

en lugar de: "estimated_delivery_date": "{$tomorrow|date_format:'%Y-%m-%d'}",

esto: "estimated_delivery_date": "{$tomorrow}",

 

Así sí me ha cogido todos los datos y me muestra el popup de google para consentir el envío de la encuesta al cliente :)

 

Un saludo!

Edited by Naroa (see edit history)
Link to comment
Share on other sites

  • 8 months later...
  • 9 months later...

Hola, 

 

Antes de nada, gracias por el aporte. Los cambios que habéis realizado son para Prestashop 1.6, pero ¿Como podría insertarlo en Prestashop 1.7? La arquitectura de los ficheros no son los mismos. Espero alguien pueda ayudarme

Muchas gracias de antemano!!

Saludos

 

Link to comment
Share on other sites

En prestashop 1.7 el fichero tpl esta 

themes/classic/templates/checkout/order-confirmation.tpl

El fichero override, haz lo mismo que en las instrucciones

 

Puedes encontrar modulos en addons que hacen "el trabajo sucio" y añaden el codigo 

En mi pagina web tambien tengo uno para vender

Link to comment
Share on other sites

  • 2 weeks later...

Hola gusman126!

Muchas gracias por tu ayuda

He visto los plugins, pero me gustaría hacerlo sin plugin para no sobrecargar el PrestaShop. El archivo del order-confirmation.tpl lo tenía localizado, pero el override no sé si está correctamente ya que es un poco diferente al de la 1.6. Lo he hecho siguiendo los pasos de mAchAcA y así me ha quedado el override del controller, no sé si debo eliminar o añadir algo más:

 

public function initContent()
    {
        if (Configuration::isCatalogMode()) {
            Tools::redirect('index.php');
        }

        $order = new Order(Order::getIdByCartId((int) ($this->id_cart)));
        $presentedOrder = $this->order_presenter->present($order);
        $register_form = $this
            ->makeCustomerForm()
            ->setGuestAllowed(false)
            ->fillWith(Tools::getAllValues());

        parent::initContent();

        $this->context->smarty->assign(array(
            'HOOK_ORDER_CONFIRMATION' => $this->displayOrderConfirmation($order),
            'HOOK_PAYMENT_RETURN' => $this->displayPaymentReturn($order),
            'order' => $presentedOrder,
            'register_form' => $register_form,
            'id_order' => $this->id_order,
            'reference_order' => $this->reference,
            'id_order_formatted' => sprintf('#%06d', $this->id_order),
            'email' => $this->context->customer->email
        ));

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

        $this->context->smarty->assign(array(
                'id_order' => $this->id_order,
                'reference_order' => $this->reference,
                'id_order_formatted' => sprintf('#%06d', $this->id_order),
                'email' => $this->context->customer->email
            ));
            /* If guest we clear the cookie for security reason */
            $this->context->customer->mylogout();
        }
        $this->setTemplate('checkout/order-confirmation');
    }

 

Con respecto al tpl, también  he seguido sus instrucciones y así me ha quedado. No sé si las variables está correctamente:


<script>
  window.renderOptIn = function() { 
    window.gapi.load('surveyoptin', function() {
      window.gapi.surveyoptin.render(
        {
          // REQUIRED
          "merchant_id":"xxxxxxxxx",
          "order_id": "{$reference_order}",
          "email": "{$email}",
          "delivery_country": "ES",
          "estimated_delivery_date": "{$tomorrow|date_format:'%Y-%m-%d'}",

          // OPTIONAL
          "opt_in_style": "CENTER_DIALOG"
        }); 
     });
  }
</script>
<!-- END GCR Opt-in Module Code -->

Con el código que he dejado no me ha cogido los datos cogido nada, sigue apareciéndome la notificación de que no ha recibido datos

Espero puedas ayudarme.

Muchas gracias!!

Saludos

 

Link to comment
Share on other sites

  • 1 month later...
On 23/12/2016 at 11:16 AM, mAchAcA said:

Buenos días.

 

Yo lo he realizado de la siguiente forma, aunque no se si es la más correcta.

 

En primer lugar he duplicado el controlador de confirmación de orden de pedido y lo he metido en override/controllers/front/OrderConfirmationController.php y le he editado lo siguiente:


public function initContent()
    {
        parent::initContent();
		
        $this->context->smarty->assign(array(
            'is_guest' => $this->context->customer->is_guest,
            'HOOK_ORDER_CONFIRMATION' => $this->displayOrderConfirmation(),
            'HOOK_PAYMENT_RETURN' => $this->displayPaymentReturn(),
			'tomorrow', strtotime('+1 day'),
			'reference_order' => $this->reference,
			'email' => $this->context->customer->email
        ));

        if ($this->context->customer->is_guest) {
            $this->context->smarty->assign(array(
                'id_order' => $this->id_order,
                'reference_order' => $this->reference,
                'id_order_formatted' => sprintf('#%06d', $this->id_order),
                'email' => $this->context->customer->email
            ));
            /* If guest we clear the cookie for security reason */
            $this->context->customer->mylogout();
        }

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

Después me he ido a mi plantilla y he editado el fichero order-confirmation.tpl


<script src="https://apis.google.com/js/platform.js?onload=renderOptIn" async defer></script>
	<script>
		window.renderOptIn = function() {
			window.gapi.load('surveyoptin', function() {
			  window.gapi.surveyoptin.render(
				{
					"merchant_id": xxxxxxx,
					"order_id": "{$reference_order}",
					"email": "{$email}",
					"delivery_country": "ES",
					"estimated_delivery_date": "{$tomorrow|date_format:'%Y-%m-%d'}",
					"opt_in_style": "CENTER_DIALOG"
				});
			});
		 }
	</script> 

La integración de la insignia no la he realizado, ya que es opcional

¿Como queda el archivo de order-confirmation.tpl? Se añade este código o se queda solo con este script.

Gracias

Link to comment
Share on other sites

On 25/2/2017 at 1:10 PM, Naroa said:

Hola mAchAcA!

 

Gracias por tu aporte, me ha ayudado mucho :) pero he seguido tus pasos y todo bien menos la fecha que no me la cogía :(

 

Por si a alguien más le ocurre yo lo he solucionado con estos cambios:

 

en el archivo  OrderConfirmationController.php

 

en lugar de: 'tomorrow', strtotime('+1 day'), 

he usado: 'tomorrow' => date('Y-m-d', strtotime('+1 day')),

 

y en el archivo  order-confirmation.tpl

 

en lugar de: "estimated_delivery_date": "{$tomorrow|date_format:'%Y-%m-%d'}",

esto: "estimated_delivery_date": "{$tomorrow}",

 

Así sí me ha cogido todos los datos y me muestra el popup de google para consentir el envío de la encuesta al cliente :)

 

Un saludo!

He seguido tus pasos y no me muestra ese popup.

Tengo prestashop 1.6.1.7  ¿que debo hacer?

Link to comment
Share on other sites

  • 4 months later...
  • 1 month later...
  • 4 months later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...