Conmutar mini-carro desplegable cuando el producto agregado a la cesta

Tengo un mini carrito desplegable de jQuery ubicado en el encabezado de mi tienda Magento. Cuando se desplaza el enlace “Su carrito”, el menú desplegable muestra los elementos agregados recientemente.

Ahora he integrado la extensión Ajax add to cart que permite a los clientes agregar al carrito sin actualizar la página. El problema que tengo ahora es que cuando se agregan productos, no hay forma de saberlo sin tener acceso al enlace “Su carrito”.

Me gustaría poder tener el mini-carrito desplegable automáticamente cuando se agrega un producto, pero no estoy seguro de cómo hacerlo.

¿Alguien podría darme algún consejo por favor?

¡Gracias por adelantado!

Código para Ajax añadir al carrito:

 //  And code for Mini-Cart: function slideUp() { jQuery('#topCartContent:visible').slideUp(1000); jQuery('.top-link-cart').addClass('mini-cart-layer-up'); jQuery('.top-link-cart').removeClass('mini-cart-layer-down'); } function slideDown() { jQuery('#topCartContent:hidden').slideDown(1000); /*startTimer()*/ /* optional*/ jQuery('.top-link-cart').addClass('mini-cart-layer-down'); jQuery('.top-link-cart').removeClass('mini-cart-layer-up'); } function toggleTopCart() { if(jQuery('#topCartContent').is(':visible')) { slideUp(); } else { slideDown(); } } var timer; function startTimer() { timer = setTimeout(function(){ slideUp(); }, 5000); } jQuery(document).ready(function(){ jQuery('.top-link-cart').mouseover(function(){ toggleTopCart(); }); jQuery('.top-link-cart').mouseover(function(){ clearTimeout(timer); }).mouseout(function(){ startTimer(); }); jQuery("#topCartContent").mouseover(function() { clearTimeout(timer); }).mouseout(function(){ startTimer(); }); }); 

Esto es sorprendentemente simple, pero aprendo esto después de perder algunas de mis horas (en realidad no fueron desperdiciadas)

Cree un observador para observar cuando el producto se agrega al carrito.

Config.xml

     singleton NameSpace_TriggerEvent_Model_Observer opencartafteradd     

Ahora, Observer.php

 getEvent(); $product = $event->getProduct(); Mage::getSingleton('core/session')->setOpenMinicart('ON'); } } 

Tenga en cuenta que solo estamos activando una variable de sesión. Después de esto, la parte de reposo se manejaría utilizando una pequeña cantidad de script java en, preferiblemente, header.phtml o footer.phtml (disponible para cada página del sitio: P). Acabo de cambiar la parte del contenido de la minitarea y de nuevo al cabo de unos segundos

  

Si usa jQuery slideDown (), – Up () o -Toggle (), notará una falla en la animación (también conocida como una capa que se mueve verticalmente durante un segundo).

Así que lo que hice fue bastante simple:

 if ( $('.messages .success-msg').length ) { $('.messages').css('display','none'); // 'disable' default messages on top of content function showCartForASecOrThreeAndAHalf() { $('#mini-cart .menu').css('display','block'); setTimeout(function () { $('#mini-cart .menu').css('display',''); }, 3500); // display:'' to restre previous settings } showCartForASecOrThreeAndAHalf(); } 

Espero que esto te ayude más 😉

usted dice ‘… cuando se agregan productos, no hay forma de saberlo sin tener que pasar por el enlace “Su carrito”. Debe haber una forma. ¿Cuál es el código que activa la acción ‘desplegable’ de su carrito?

Lo más probable es que sea un jQuery.sliedeDown o similar. En la función de éxito de tu llamada ajax, necesitas ejecutar la misma. Alternativamente, puede activar un evento de JavaScript, por ejemplo, en la función de éxito: $ (‘# cart’). Mouseover ().