fbpx

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 SOO Paypal - Prestashop Subscriptions & Recurring Payment (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.

Descubre más

Artículos relacionados

Algo podría ser útil para su tienda Prestashop

How to start building an amazing Prestashop Menu

235 premium Prestashop icons on SOO Magi…

You can also use these icons as a part of Prestashop 235 customized Prestashop Icons brought to you by SOO...

PrestaSOO website uses cookies. By continuing to use this website, you are giving consent to cookies being used. More details… X