Deshabilitar la Ventana Emergente de Agregar al Carrito

Muchas personas desean deshabilitar la ventana emergente que se muestra al agregar un producto al carrito con Ajax y, en su lugar, redireccionar a la página Resumen del Carrito. He visto muchas publicaciones que indican desactivar la ventana emergente Agregar al Carrito en el módulo Bloque de Carritos, pero esto solo funciona para la versión Prestashop 1.6.

En Prestashop 1.7, ya no existe la función “Redirigir después de agregar producto al carrito”, y en este caso, es posible que desee deshabilitar la característica de Carrito Ajax que pertenece al módulo de Carrito de Compras. Desafortunadamente, si deshabilita esta función, la ventana emergente no se mostrará, pero tampoco redireccionará a su cliente a la página Resumen del Carrito.

En este tutorial, le mostraré cómo deshabilitar la ventana emergente Agregar al Carrito de Prestashop, y redirigir al Resumen del Carrito en Prestashop 1.7.

Deshabilitar la Ventana Emergente de Agregar al Carrito de Prestashop

¿Cómo redirigir al cliente a la página Resumen del Carrito después de hacer clic en “Agregar al Carrito”?

En 1.6, la opción estaba en Preferences -> Product(Preferencias -> Producto) -(Redirigir después de agregar producto al carrito). Esta característica se eliminó desde Prestashop 1.7. No sé por qué, pero estoy seguro de que mucha gente la extraña mucho :)

Primera opción

De esta forma, intentaremos editar el archivo /your- website/modules/ ps_shoppingcart/ps_shoppingcart.js. En algún lugar cerca de la línea 49 puedes encontrar un código como este:

if (resp.modal) {
            showModal(resp.modal);
}

showModal(resp.modal) es el código de fuente que llama al menú emergente modal. Cámbielo para deshabilitar la ventana emergente y redireccionar a los clientes a la página de Resumen del Carrito:

if (resp.modal) {
            window.location.replace(prestashop.urls.pages.cart);
}

Borre la caché del sitio web y la memoria caché del navegador para ver el resultado.

¡Funciona!

Pero... ¡espere! Este truco funciona si los visitantes no están conectados. Sin embargo, si agregan los productos mientras están conectados, son redirigidos a la página de inicio en lugar de al Resumen del Carrito.

Aquí está

Desarrollamos un módulo Prestashop llamado ChargeMe (Suscripciones de Paypal y Pago Recurrente) que le permite vender productos de suscripción (revistas, membresía, libros... etc.) a través de Paypal.

Al momento de pagar, solo queremos 1 producto de suscripción en la cesta, por lo que necesitamos la redirección automáticamente cuando se agreguen con el botón Suscribir. Luego agregamos una función a nuestro archivo js:

prestashop.on('updateCart',function (event) {
						...
					        $.post(ajax_url, requestData, null, 'json').then(function (resp) {
						      	location.href = cart_url;
					        }).fail(function (resp) {
					          	prestashop.emit('handleError', {eventType: 'updateShoppingCart', resp: resp});
					        });
				      });

Como puede ver, en lugar de redirigir a prestashop.urls.pages.cart, queremos redireccionar a cart_url. Este valor es un valor predefinido. No importa que estén registrados en su sitio web o no, el módulo los Redirigirá al Resumen del carrito de inmediato.

¿Qué tiene que hacer ahora? Tenemos que agregar nuestro valor a su sitio web. Abra el archivo /your- website/modules/ ps_shoppingcart/ps_shoppingcart.php para agregar algo. Verá:

public function hookHeader()
    {
        if (Configuration::isCatalogMode()) {
            return;
        }

        if (Configuration::get('PS_BLOCK_CART_AJAX')) {
            $this->context->controller->registerJavascript('modules-shoppingcart', 'modules/'.$this->name.'/ps_shoppingcart.js', ['position' => 'bottom', 'priority' => 150]);
        }
    }

Cámbielo a

public function hookHeader()
    {
        if (Configuration::isCatalogMode()) {
            return;
        }

        if (Configuration::get('PS_BLOCK_CART_AJAX')) {
            $this->context->controller->registerJavascript('modules-shoppingcart', 'modules/'.$this->name.'/ps_shoppingcart.js', ['position' => 'bottom', 'priority' => 150]);
        }
    	$this->smarty->assign(array(
            'cart_url' => $this->getCartSummaryURL(),
        ));

        return $this->fetch('module:ps_shoppingcart/header.tpl');
    }

Llamamos a un archivo nuevo, y ahora tenemos que crearlo como /your- website/modules/ ps_shoppingcart/header.tpl. Ponga este contenido en este archivo:

<script type="text/javascript">
	{if isset($cart_url)}
		var cart_url = '{$cart_url}';
	{/if}
</script>

¿Qué es diferente? Como verá, prestashop.urls.pages.cart no es un valor predefinido. Si el inicio de sesión del cliente, prestashop.urls.pages.cart significa la página de inicio, o no, esto también significa la página de Carrito. Necesitamos usar nuestro valor.

Ahora podemos editar el archivo /your-website/modules/ps_shoppingcart/ps_shoppingcart.js utilizando nuestro valor:

if (resp.modal) {
           location.href = cart_url;
}

Sería mejor si tenemos una opción para desactivar o habilitar una característica. De todos modos, espero que este truco le dé algunos valores.

Bueno, gracias a todos. Esperamos sus comentarios a continuación. Nos veremos de nuevo la próxima semana para otros curso Prestashop. Cuídense.

Get this Advanced Cart Rules module

New module.

Xleft module

Xleft shows customers how much more they need to spend to get free shipping in real time.

¡Última actualización de módulos!

Age Restriction - 18+ ⊙
Solucione algunos problemas de visualización en dispositivos móviles.


Newsletter Popup v3.2.2
Edición de Navidad para impulsar tus ventas.


Trusty v1.4.7 ⊙
Compatible con PrestaShop 1.7 y PrestaShop 8.

PrestaSOO team
Todo lo que necesita para ganarse la vida haciendo el trabajo que ama.

Descubrir


Es una sabia inversión

Los módulos de Prestashop que creamos primero para resolver el problema de nuestro propio negocio: un sitio de comercio electrónico. Eso significa que son muy útiles para un negocio serio. Si valora su propiedad web, estos módulos son una inversión inteligente.
Sarah Reeves, Desarrollador de aplicaciones @ PrestaSOO
Hecho con en París y Hanoi
PrestaSOO © 2024. Reservados todos los derechos // Privacy Policy Terms of Service