Jump to content

[SOLUCIONADO] Cómo eliminar la ventana emergente al añadir al carrito


Recommended Posts

Creo que lo he resuelto, gracias a OBsolutions, quienes me han chivado la función que se encarga de esto, se llama 'UpdateLayer'. Lo único que he hecho ha sido comentarla y se encuentra en:

  • \themes\plantilla\ajax-cart.js
    	updateLayer : function(product){
    		/*$('#layer_cart_product_title').text(product.name);
    		$('#layer_cart_product_attributes').text('');
    		if (product.hasAttributes && product.hasAttributes == true)
    			$('#layer_cart_product_attributes').html(product.attributes);
    		$('#layer_cart_product_price').text(product.price);
    		$('#layer_cart_product_quantity').text(product.quantity);
    		$('.layer_cart_img').html('<img class="layer_cart_img img-responsive" src="' + product.image + '" alt="' + product.name + '" title="' + product.name + '" />');
    
    		var n = parseInt($(window).scrollTop()) + 'px';
    
    		$('.layer_cart_overlay').css('width','100%');
    		$('.layer_cart_overlay').css('height','100%');
    		$('.layer_cart_overlay').show();
    		$('#layer_cart').css({'top': n}).fadeIn('fast');
    		crossselling_serialScroll();*/
    	},
    
  • \themes\plantilla\js\modules\blockcart\ajax-cart.js
    	updateLayer : function(product){
    		/*$('#layer_cart_product_title').text(product.name);
    		$('#layer_cart_product_attributes').text('');
    		if (product.hasAttributes && product.hasAttributes == true)
    			$('#layer_cart_product_attributes').html(product.attributes);
    		$('#layer_cart_product_price').text(product.price);
    		$('#layer_cart_product_quantity').text(product.quantity);
    		$('.layer_cart_img').html('<img class="layer_cart_img img-responsive" src="' + product.image + '" alt="' + product.name + '" title="' + product.name + '" />');
    
    		var n = parseInt($(window).scrollTop()) + 'px';
    
    		$('.layer_cart_overlay').css('width','100%');
    		$('.layer_cart_overlay').css('height','100%');
    		$('.layer_cart_overlay').show();
    		$('#layer_cart').css({'top': n}).fadeIn('fast');
    		crossselling_serialScroll();*/
    	},

Lo único que he hecho ha sido comentar el contenido de la función.

 

Para los que quieran que les aparezca un mensaje comunicando que el producto se agregó correctamente, gracias al equipo de PrestaMarketing pueden hacerlo editando el siguiente contenido:

 

themes/default-bootstrap/js/modules/blockcart/ajax-cart.js

if (!jsonData.hasError)
				{
					window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);

					if (jsonData.crossSelling)
						$('.crossseling').html(jsonData.crossSelling);

					if (idCombination)
						$(jsonData.products).each(function(){
							if (this.id != undefined && this.id == parseInt(idProduct) && this.idCombination == parseInt(idCombination))
								window.parent.ajaxCart.updateLayer(this);
						});
					else
						$(jsonData.products).each(function(){
							if (this.id != undefined && this.id == parseInt(idProduct))
								window.parent.ajaxCart.updateLayer(this);
						});
					if (contentOnly)
						parent.$.fancybox.close();
				}

Para dejarlo así:

if (!jsonData.hasError)
       {
         window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
         alert('producto añadido');
       }
Edited by arturobelver (see edit history)
Link to comment
Share on other sites

  • 4 weeks later...

Hola , he hecho las modificaciones y ha quedado perfecto ,  solo queria sabr una cosa , a ese pequeño mensaje de producto aadido, se l epodria dar color  a background y al texto fuente o poner en negrita o tamaño, gracas

Link to comment
Share on other sites

  • 1 month later...

Para que quede correctamente podríamos dejar un mensaje añadiendo lo siguiente en vez del alert, a ver que les parece:

 

$.fancybox.open([{
   type: 'inline',
   autoScale: true,
   minHeight: 30,
   autoDimensions: true,
   padding: 20,
   content: '<p class="fancybox-error">Producto añadido</p>'
}],
{
   padding: 0
});

Saludos y espero que les sirva!

 

post-781792-0-29640000-1406498011_thumb.png

Link to comment
Share on other sites

tampoco se correctamente en que archivo y que parte sustituir con esto que diices

 

$.fancybox.open([{
type: 'inline',
autoScale: true,
minHeight: 30,
autoDimensions: true,
padding: 20,
content: '<p class="fancybox-error">Producto añadido</p>'
}],
{
padding: 0
});

 

 

saludos

Link to comment
Share on other sites

  • 4 weeks later...

Hola jjryeste, no sé si te seguirá sirviendo, pero lo que matiasmenker propone sería dejar la parte que mencionaba arturobelver en el ajax-cart.js (sobre la linea 318):

if (!jsonData.hasError)
 {
 window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
 alert('producto añadido');
 }	

tal como sigue:

if (!jsonData.hasError)
{
window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
$.fancybox.open([{
 type: 'inline',
 autoScale: true,
 minHeight: 30,
 autoDimensions: true,
 padding: 20,
 content: '<p class="fancybox-error">PRODUCTO AGREGADO</p>'
}],
{
padding: 0
});
}
Link to comment
Share on other sites

Para modificar el estilo del popup hay que editar el archivo ubicado en js/jquery/plugins/fancybox/jquery.fancybox.css  Sobre la línea 59 encontrarás la clase fancybox-error en la que puedes cambiar la fuente, tamaño, agregar un color de fondo, etc.

Link to comment
Share on other sites

Debes cambiar el archivo ajax-cart.js tal como propone matiasmenker:

if (!jsonData.hasError)
{
window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
$.fancybox.open([{
 type: 'inline',
 autoScale: true,
 minHeight: 30,
 autoDimensions: true,
 padding: 20,
 content: '<p class="fancybox-error">PRODUCTO AGREGADO</p>'
}],
{
padding: 0
});
}

De esa manera, en lugar de un alert, aparecerá un fancybox al cual se le aplica el estilo que has modificado en el archivo css que te mencioné anteriormente. Mi ejemplo queda de la siguiente manera, utilizando el siguiente código css:

.fancybox-error{
	color: #ccc;
        background: #002241;
	font: 18px/20px "Open Sans",Helvetica,Arial,sans-serif;
	margin: 0;
	padding: 15px;
	white-space: nowrap;
}

 

Link to comment
Share on other sites

Perfecto además por rizar el rizo, ya que es un "pequeño mensaje" mejor si se cierra sólo a los 3 segundos, entonces seria así

var addtocartconfirmation = 'PRODUCT ADDED';
if (!jsonData.hasError)

{
	
	window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
	$.fancybox.open([{
	 type: 'inline',
	 autoScale: true,
	 minHeight: 30,
	 autoDimensions: true,
	 padding: 20,
	 content: '<p class="fancybox-error">' + addtocartconfirmation + '</p>',
	 afterLoad: function(){
		   setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
		  }
	}],
	{
	padding: 0
	});

Simplemente he agregado un afterLoad, tambien he sacado el mensaje a una variable para traducirlo (nosotros tenemos la web en varios idiomas) pero no doy con ello...

 

se admiten ideas

Link to comment
Share on other sites

Perfecto además por rizar el rizo, ya que es un "pequeño mensaje" mejor si se cierra sólo a los 3 segundos, entonces seria así

var addtocartconfirmation = 'PRODUCT ADDED';
if (!jsonData.hasError)

{
	
	window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
	$.fancybox.open([{
	 type: 'inline',
	 autoScale: true,
	 minHeight: 30,
	 autoDimensions: true,
	 padding: 20,
	 content: '<p class="fancybox-error">' + addtocartconfirmation + '</p>',
	 afterLoad: function(){
		   setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
		  }
	}],
	{
	padding: 0
	});

Simplemente he agregado un afterLoad, tambien he sacado el mensaje a una variable para traducirlo (nosotros tenemos la web en varios idiomas) pero no doy con ello...

 

se admiten ideas

 

 

 

 

En el blockcart.tpl, anadir abajo en la zona de las addjs

{addJsDefL name=addtocartconfirmation}{l s='PRODUCT ADDED' mod='blockcart' js=1}{/addJsDefL}
Link to comment
Share on other sites

Hola he seguido , todos los pasos ahora ,  y sale todo bien incluso el cierre , pero lo he puesto en 2 segundos y con esquinas redondeadas , incluso le he dado un sombreado , pero aun sigo sin poder cambiar el color de la ventana emergente ni el de las letras, adjunto imagen.

Tampoco entiendo lo de añadir en blockcart.tpl ( en el de modulos , o en el de modulos del tema) añadir

 

{addJsDefL name=addtocartconfirmation}{l s='PRODUCT ADDED' mod='blockcart' js=1}{/addJsDefL}

 

para que, o que mision tiene , Gracias.

 

post-158433-0-87702900-1408622953_thumb.jpg

 

Link to comment
Share on other sites

muchas gracias ventura, entonces sobra la primera linea que he puesto yo, seria así

if (!jsonData.hasError)

{
	
	window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
	$.fancybox.open([{
	 type: 'inline',
	 autoScale: true,
	 minHeight: 30,
	 autoDimensions: true,
	 padding: 20,
	 content: '<p class="fancybox-error">' + addtocartconfirmation + '</p>',
	 afterLoad: function(){
		   setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
		  }
	}],
	{
	padding: 0
	});

y luego en el blockcart.tpl ponemos al final esto:

{addJsDefL name=addtocartconfirmation}{l s='PRODUCT ADDED' mod='blockcart' js=1}{/addJsDefL}

con esto, lo que conseguimos jjryeste es poder traducir "producto añadido" a otros idiomas... veo muchas tiendas que aun estan sólo en castellano y solo venden en españa, espero que les vaya mejor que a nosotros que sólo vendemos un 15% en nuestra patria... en el planeta hay mucha, mucha gente con ganas de comprar, simplemente hay que ponerselo un poco más fácil.

Link to comment
Share on other sites

ok, pero a cual tpl te refieres al que esta en modulos, o al que esta en el tema modulos

y no consigo cambar el color de l aventana y el texto , po rlo dema todo correcto pongo enlace

http://www.punto-de-cruz.es/

 m egustaria poder cambiar el color de la ventana y color del texto interno

muchas gracias, por lo demas perfecto, solo que se retrasa un poco al salir el fancyfox, tarda unos segundos en parecer producto agregado

Link to comment
Share on other sites

  • 3 months later...

muchas gracias ventura, entonces sobra la primera linea que he puesto yo, seria así

if (!jsonData.hasError)

{
	
	window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
	$.fancybox.open([{
	 type: 'inline',
	 autoScale: true,
	 minHeight: 30,
	 autoDimensions: true,
	 padding: 20,
	 content: '<p class="fancybox-error">' + addtocartconfirmation + '</p>',
	 afterLoad: function(){
		   setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
		  }
	}],
	{
	padding: 0
	});

y luego en el blockcart.tpl ponemos al final esto:

{addJsDefL name=addtocartconfirmation}{l s='PRODUCT ADDED' mod='blockcart' js=1}{/addJsDefL}

con esto, lo que conseguimos jjryeste es poder traducir "producto añadido" a otros idiomas... veo muchas tiendas que aun estan sólo en castellano y solo venden en españa, espero que les vaya mejor que a nosotros que sólo vendemos un 15% en nuestra patria... en el planeta hay mucha, mucha gente con ganas de comprar, simplemente hay que ponerselo un poco más fácil.

 

 

Hola, estoy intentando proceder, pero tengo el problema siguiente:

 

El tema de la ventana emergente me aparece sin problemas, pero no consigo poner el mensaje de alerta que comentáis,

al modificar el código se actualiza el carrito pero no aparece ninguna alerta de confirmación. Podriais ayudarme? en principio solo deberia mofificar /public_html/themes/plantillanueva/js/modules/blockcart/ajax-cart.js???

uso 1.6.0.8

 

Gracias de antemano

Link to comment
Share on other sites

Hola a todos, aunque todo esta funcionado bien , acabo de ver un pequeño detalle

cuando la compra se hace con el quick view

osea cuado le damso a mas , morre o view al producto

y añadimos al carrito , sale tambien perfectamente el mensaje ajax emergente diciendo producto agregado, este se quita pasados 2 segundos , pero, en l aparte superiro izquiera dond e esta el carrito , se queda girando y girando , sin marcarse , como seri alo normal, puede deberse a algun archivo mal modificado, o necesito añadir algun codigo mas.

Gracias a todos

Adjunto imagenes y lo poderis comprobar en  http://www.punto-de-cruz.es/

post-158433-0-22287500-1417026327_thumb.jpg post-158433-0-06573400-1417026524_thumb.jpg

Link to comment
Share on other sites

Pues si os soy sincero despues de mucho marear la perdiz, creo la cosas es más sencilla. En nuestro caso y debido al por nuestro tipo de comprador (entre 50 y 65 años) el formulario emergente confunde, pero resulta que el fancybox es peor.

 

El ajax es muy bonito pero un usuario con poca experiencia en compra online una vez desaparece el fancybox NO SABE QUE HACER. hemos averiguado que una parte de ellos "cree que lo ha hecho mal" y se va, DESCONOCE QUE DEBE IR A LA ESQUINA SUPERIOR derecha a procesar su compra.

 

Una solucion seria quitar el Ajax, pero es fea (el ajax mola) desplegar el carrito para compras grandes esta muy bien pues, además si quitamos el ajax obligamos al cliente a ir al resumen de la compra, con lo que nos comprará menos.

 

Al final resulta que la solución mas sencilla, es simplificar el formulario emergente como la imagen adjunta.

 

Pero es que lo mejor es que para reducirlo basta hacerlo por CSS ocultando cosas en el apartado correspondiente del blockcart.css o quitarlas del blockcart.tpl que tenemos en nuestro plantilla.

 

En el ajax-cart.js como mucho hay que hacer esta modificacion para que aparezca un poco más abajo.

 

Esto

var n = parseInt($(window).scrollTop()) + 'px';

por esto

var n = parseInt($(window).scrollTop()) + 80 + 'px';

De esta forma no tendremos que hacer grandes cambios cuando aparezcan versiones superiores de Prestashop, ya que sólo hemos quitado información de nuestra plantilla.

 

A veces la solución más sencilla es la mejor :)

post-453543-0-17930300-1417028760_thumb.jpg

Edited by moraira (see edit history)
  • Like 3
Link to comment
Share on other sites

Pues si os soy sincero despues de mucho marear la perdiz, creo la cosas es más sencilla. En nuestro caso y debido al por nuestro tipo de comprador (entre 50 y 65 años) el formulario emergente confunde, pero resulta que el fancybox es peor.

 

El ajax es muy bonito pero un usuario con poca experiencia en compra online una vez desaparece el fancybox NO SABE QUE HACER. hemos averiguado que una parte de ellos "cree que lo ha hecho mal" y se va, DESCONOCE QUE DEBE IR A LA ESQUINA SUPERIOR derecha a procesar su compra.

 

Una solucion seria quitar el Ajax, pero es fea (el ajax mola) desplegar el carrito para compras grandes esta muy bien pues, además si quitamos el ajax obligamos al cliente a ir al resumen de la compra, con lo que nos comprará menos.

 

Al final resulta que la solución mas sencilla, es simplificar el formulario emergente como la imagen adjunta.

 

Pero es que lo mejor es que para reducirlo basta hacerlo por CSS ocultando cosas en el apartado correspondiente del blockcart.css o quitarlas del blockcart.tpl que tenemos en nuestro plantilla.

 

En el ajax-cart.js como mucho hay que hacer esta modificacion para que aparezca un poco más abajo.

 

Esto

var n = parseInt($(window).scrollTop()) + 'px';

por esto

var n = parseInt($(window).scrollTop()) + 80 + 'px';

De esta forma no tendremos que hacer grandes cambios cuando aparezcan versiones superiores de Prestashop, ya que sólo hemos quitado información de nuestra plantilla.

 

A veces la solución más sencilla es la mejor :)

muy bueno. me quedo con esta opción

Link to comment
Share on other sites

Hola estoy intentando ocultar el resumen (o parte de él), tal y como sugeris en el ultimo post.

No consigo saber donde está la información, pues en mi presta 1.6.0.9 no existe el archivo ajax.

 

En lugar de ello tengo /themes/plantilla/modules/blockart =>

 

blockart-json.tpl

blockart.tpl

crosselling.tpl

 

¿En cual de ellos encuentro las lineas a modificar?

Link to comment
Share on other sites

Hola moraira, y con ese cambio que propones de var n = parseInt($(window).scrollTop()) + 80 + 'px';

luego como se hace para que aparezca el mensaje, producto añadido correctamente a la compra, segyir comprando o finalizar compra, que mas hay que modificar, saludos y gracias

Link to comment
Share on other sites

  • 6 months later...

PS 1.6.x

Theme: default-bootstrap

--

Hola a todos, quisiera poner en mi tienda el efecto de carrito deslizante que era propio de la versión 1.5 pero antes tengo que evitar la ventana emergente al comprar un producto.

Add-to-cart-cross-sell-1024x724.png

 

¿Alguien tiene idea de cómo?

 

Gracias

 

 

Saludos,

 

tengo una curiosidad la parte en la imagen donde dice FREE SHIPPING, donde se configura para que se muestre en esa parte.

Link to comment
Share on other sites

  • 3 months later...
  • 2 weeks later...

Hola a todos, aunque todo esta funcionado bien , acabo de ver un pequeño detalle

cuando la compra se hace con el quick view

osea cuado le damso a mas , morre o view al producto

y añadimos al carrito , sale tambien perfectamente el mensaje ajax emergente diciendo producto agregado, este se quita pasados 2 segundos , pero, en l aparte superiro izquiera dond e esta el carrito , se queda girando y girando , sin marcarse , como seri alo normal, puede deberse a algun archivo mal modificado, o necesito añadir algun codigo mas.

Gracias a todos

Adjunto imagenes y lo poderis comprobar en  http://www.punto-de-cruz.es/

attachicon.gifComprar A.jpg attachicon.gifComprar B.jpg

No puedo ver su ejemplo, parece que su página esta suspendida.

Link to comment
Share on other sites

  • 5 months later...
Hola buenos dias....
Tengo un problema con el fancibox y este hilo es lo mas parecido que he encontrado.

Mi problemas esta relacionado con el fancibox de prestashop y he hecho un monton de cambios pero sin resultado.

Mi problema es que al darle a vista rapida del producto me aparece el fancibox con la descripcion del producto pero al darle al boton añadir al carrito me redirige dentro del fancibox a la pagina del carrito de compras(adjunto imagen).

 

fancibox%20erroneo.jpg?1460194367


 

Lo que me tendria que devolver al añadir al carrito seria esto

 

fancibox%20correcto.jpg?1460194349


 

Este resultado me lo envia si clico a añadir al producto desde la vista general del producto, es decir, que desde un sitio lo hace bien y desde el otro no y no se a que es debido.

 

Un saludo y gracias de antemano 

Link to comment
Share on other sites

 

Hola buenos dias....
Tengo un problema con el fancibox y este hilo es lo mas parecido que he encontrado.

Mi problemas esta relacionado con el fancibox de prestashop y he hecho un monton de cambios pero sin resultado.

Mi problema es que al darle a vista rapida del producto me aparece el fancibox con la descripcion del producto pero al darle al boton añadir al carrito me redirige dentro del fancibox a la pagina del carrito de compras(adjunto imagen).

 

fancibox%20erroneo.jpg?1460194367

 

Lo que me tendria que devolver al añadir al carrito seria esto

 

fancibox%20correcto.jpg?1460194349

 

Este resultado me lo envia si clico a añadir al producto desde la vista general del producto, es decir, que desde un sitio lo hace bien y desde el otro no y no se a que es debido.

 

Un saludo y gracias de anteman

Pudiste solucionarlo David? tengo el mismo problema :(

Link to comment
Share on other sites

Pudiste solucionarlo David? tengo el mismo problema :(

Hola tanatosmx....

Si he podido solucionarlo despues de comerme mucho la cabeza....

El error viene producido por el archivo /web/themes/tu tema/js/modules/blockcart/ajax-cart.js

En este archivo tienes que comentar las siguientes dos lineas, estan sobre la linea 140. o bien copia y pega :

 

//for product page 'add' button...
// if ($('.cart_block').length) {
$(document).off('click', '#add_to_cart button').on('click', '#add_to_cart button', function(e){
e.preventDefault();
ajaxCart.add($('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null);
});
// }
 
Y así te debería aparecer correctamente.
Espero que te haya servido.
Edited by David Glez (see edit history)
Link to comment
Share on other sites

  • 5 months later...
  • 2 months later...

Perfecto además por rizar el rizo, ya que es un "pequeño mensaje" mejor si se cierra sólo a los 3 segundos, entonces seria así

var addtocartconfirmation = 'PRODUCT ADDED';
if (!jsonData.hasError)

{
	
	window.parent.ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
	$.fancybox.open([{
	 type: 'inline',
	 autoScale: true,
	 minHeight: 30,
	 autoDimensions: true,
	 padding: 20,
	 content: '<p class="fancybox-error">' + addtocartconfirmation + '</p>',
	 afterLoad: function(){
		   setTimeout( function() {$.fancybox.close(); },3000); // 3000 = 3 secs
		  }
	}],
	{
	padding: 0
	});

Simplemente he agregado un afterLoad, tambien he sacado el mensaje a una variable para traducirlo (nosotros tenemos la web en varios idiomas) pero no doy con ello...

 

se admiten ideas

cuando desactivas la vista rápida, la única manera de que se muestre la ventana de "producto añadido" es cuando estas dentro de la ficha de producto, en la home si añades productos a través de los módulos "Promociones especiales, productos mas vistos, etc.) sin entrar en el producto no se muestra ningún mensaje y se agregan al carrito sin ningun aviso,

¿donde podría configurar este apartado para cuando se añadan productos desde ahí salte la misma ventana de producto añadido?

 

saludos!

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...