viernes, 25 de julio de 2014

No se muestra la segunda imagen - leofast - prestashop

En la plantilla para Prestashop Leofast, podemos encontrarnos con un problema y es que no se nos visualiza la segunda imagen de nuestro producto al pasar el ratón por encima de la primera
Tenéis un ejemplo de lo que hablo en: http://www.pelucastalia.com/ una web en la que ando trabajando ultimamente, cuando uno de los productos tiene 2 o mas imagenes estas deben intercambiarse al pasar el ratón sobre el producto, pero en lugar de eso sale un interrogante (la imagen por defecto).


La solución aunque no es obvia es sencilla deberemos sustituir el condicional que viene en la linea 81 del archivo leocustomajax.js, ubicado en la carpeta modules/leocustomajax, por el código que os dejo aquí, no es la mejor solución, pero esta funcionando a esperas de que los desarrolladores lo arreglen
                        if (jsonData.pro_add) {
                            var listProductImg = new Array();
                            for (i = 0; i < jsonData.pro_add.length; i++) {
                                listProductImg[jsonData.pro_add[i].id] = jsonData.pro_add[i].content;
                            }
                            $(".product-additional").each(function() {
                                if (listProductImg[$(this).attr("rel")]){
                                    host = window.location.href;
                                    rutaImgOld = listProductImg[$(this).attr("rel")];
                                 
                                    if(rutaImgOld !== undefined){
                                        img= rutaImgOld.substr(host.length);
                                        rutaCompleta = host + $(this).attr("rel") + '-' + img;
                                        $(this).html('<img class="img-responsive" title="" alt="" src="' + rutaCompleta + '"/>');
                                    }else{
                                        $(this).html('<img class="img-responsive" title="" alt="" src="' + listProductImg[$(this).attr("rel")] + '"/>');
                                    }
                                }
                            });

Edito esta entrada para dejar el codigo que he tenido que modificar hoy mismo

if (jsonData.pro_add) {
    var host = window.location.origin;
    var listProductImg = new Array();
    for (i = 0; i < jsonData.pro_add.length; i++) {
        listProductImg[jsonData.pro_add[i].id] = jsonData.pro_add[i].content;
    }
    $(".product-additional").each(function() {
        if (listProductImg[$(this).attr("rel")])
        var rutaImgOld = listProductImg[$(this).attr("rel")];
        if(rutaImgOld !== undefined){
            //img = rutaImgOld.substr(host.length+1);
            rutaCompleta = host + "/" + $(this).attr("rel") + '-' + rutaImgOld.substr(host.length+1);
            $(this).html('<img class="img-responsive" title="" alt="" src="' + rutaCompleta + '"/>');
        }
    });
    //addEffOneImg();
}

En primer lugar pediros perdón a todos los que lo hayáis usado, ya que en paginas que no sean la home daba error, en segundo lugar disfrutar del actual, ya que esta probado, y funcionando, además, esta mas optimizado, no es ninguna mejora abismal ya que es muy poco código, pero ya sabemos que linea a linea, y variable a variable