Guardar personalización de producto al pulsar el botón de añadir al carrito en Prestashop

De wikipedia_IndianWebs
Saltar a: navegación, buscar




En Prestashop, cuando un producto tiene personalización se debe pulsar el botón de guardar antes de poder añadir el producto al carrito, esto hace más confuso el proceso de compra y añade un clic innecesario. Para poder hacer este proceso de guardado de la personalización en un solo paso al pulsar el botón de añadir al carrito se debe modificar el siguiente código en el archivo modules/blockcart/ajax-cart.js:

En la línea 178 cuando empieza la función add : function(idProduct, idCombination,addedFromProductPage, callerElement, quantity, whishlist), se debe substituir toda la función por el siguiente código, hasta la línea 251:


add : function(idProduct, idCombination,addedFromProductPage, callerElement, quantity, whishlist){
if (addedFromProductPage)
        {
            $('#add_to_cart input').attr('disabled', true).removeClass('exclusive').addClass('exclusive_disabled');
            $('.filled').removeClass('filled');
        }
        else
            $(callerElement).attr('disabled', true);

        if ($('#cart_block_list').hasClass('collapsed'))
            this.expand();
        var formData = $('#customizationForm').serialize();
        
                $.ajax({
                url: $('#customizationForm').attr('action'),
                type: 'POST',
                data: formData,
                async: false,
	                success: function (data) {
                     $.ajax({
                            type: 'POST',
                            url: baseUri,
                            async: true,
                            cache: false,
                            dataType : "json",
                            data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
                            success: function(jsonData,textStatus,jqXHR)
                            {
                                // add appliance to whishlist module
                                if (whishlist && !jsonData.errors)
                                    WishlistAddProductCart(whishlist[0], idProduct, idCombination, whishlist[1]);
                
                                // add the picture to the cart
                                var $element = $(callerElement).parent().parent().find('a.product_image img,a.product_img_link img');
                                if (!$element.length)
                                    $element = $('#bigpic');
                                var $picture = $element.clone();
                                var pictureOffsetOriginal = $element.offset();
                
                                if ($picture.size())
                                    $picture.css({'position': 'absolute', 'top': pictureOffsetOriginal.top, 'left': pictureOffsetOriginal.left});
                
                                var pictureOffset = $picture.offset();
                                if ($('#cart_block').offset().top && $('#cart_block').offset().left)
                                    var cartBlockOffset = $('#cart_block').offset();
                                else
                                    var cartBlockOffset = $('#shopping_cart').offset();
                
                                // Check if the block cart is activated for the animation
                                if (cartBlockOffset != undefined && $picture.size())
                                {
                                    $picture.appendTo('body');
                                    $picture.css({ 'position': 'absolute', 'top': $picture.css('top'), 'left': $picture.css('left'), 'z-index': 4242 })
                                    .animate({ 'width': $element.attr('width')*0.66, 'height': $element.attr('height')*0.66, 'opacity': 0.2, 'top': cartBlockOffset.top + 30, 'left': cartBlockOffset.left + 15 }, 1000)
                                    .fadeOut(100, function() {
                                        ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
                                    });
                                }
                                else
                                    ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
                            },
                            error: function(XMLHttpRequest, textStatus, errorThrown)
                            {
                                alert("Impossible to add the product to the cart.\n\ntextStatus: '" + textStatus + "'\nerrorThrown: '" + errorThrown + "'\nresponseText:\n" + XMLHttpRequest.responseText);
                                //reactive the button when adding has finished
                                if (addedFromProductPage)
                                    $('#add_to_cart input').removeAttr('disabled').addClass('exclusive').removeClass('exclusive_disabled');
                                else
                                    $(callerElement).removeAttr('disabled');
                            }
                        });
		        }
	    });
	},


Con este cambio el botón de añadir al carrito hace las dos funciones y se puede ocultar o eliminar el botón de guardar personalización.


--Oscar Sánchez Guiu (discusión) 17:49 30 abr 2014 (CEST)

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas
Compartir
Categorías
Apps
[×] CSS
[×] Diseño
Google
[×] Joomla
[×] Magento
[×] Mobile
[×] RRHH
[×] YouTube