Este sitio usa cookies, propias y de terceros.
Si se continúa con nosotros entendemos que se acepta el uso de cookies.

[Aporte] Detectar productos sin imágenes en Prestashop 1.6

Tema en 'Recursos y aportes gratuitos para Prestashop' iniciado por catoku, 10 Nov 2014.

  1. catoku

    catoku Iniciado en Prestashop

    61
    0
    0
    Estaba buscando la forma de detectar productos que teóricamente tienen una imagen, pero que luego no se ve en la tienda.

    He encontrado este aporte:

    http://blog.belvg.com/how-to-find-products-with-broken-images-in-prestashop.html

    Que consiste en lo siguiente:

    Crear un fichero con este contenido:

    Insertar CODE, HTML o PHP:
    <?php
    /*prepare list of broken images*/
    require(dirname(__FILE__).'/config/config.inc.php'); //  you might need to change the path to the file 'config.inc.php' if you are not in the root folder
    $id_lang = 1; //getting links for one language. This is enough to identify empty images
    $i = 0;
    $limit = 100;
    $filename = 'broken_urls.txt';
    file_put_contents($filename, '', LOCK_EX); //remove old content
    //file_put_contents($filename, '', FILE_APPEND | LOCK_EX); //append content
    do {
        $images = Db::getInstance()->executeS('
            select *
            from `'._DB_PREFIX_.'image` i
            limit ' . (int)($i++ * $limit) . ', ' . (int)$limit . '
        '); //receiving the stack of images
    
        foreach ($images as $image) {
            $imgObj = new Image($image['id_image'], $id_lang);
            $image_path = _PS_PROD_IMG_DIR_ . $imgObj->getImgPath() . '.' . $imgObj->image_format;
            if (!file_exists($image_path)) { //verifying, whether the file with the image exists
                $productObj = new Product($image['id_product'], NULL, $id_lang); //creating a product object for link generation
    
                print_r($image['id_product'] . ' => ' . Context::getContext()->link->getImageLink($productObj->link_rewrite, $image['id_image']) . chr(10)); //die;
                file_put_contents($filename, $image['id_product'] . ' => ' . Context::getContext()->link->getImageLink($productObj->link_rewrite, $image['id_image']) . chr(10), FILE_APPEND | LOCK_EX);
            }
        }
    } while(count($images));
    
    Guardalo con el nombre que quiera, por ejemplo:


    Insertar CODE, HTML o PHP:
    belvg.php
    He subido el fichero al raiz de la web, y luego he ejecutado el fichero accediendo al mismo fichero desde el navegador:

    Insertar CODE, HTML o PHP:
    tutienda.com/belvg.php
    Y al ejecutarlo, en el mismo directorio me ha creado una fichero llamado:

    con la información.

    * Importante leer los comentarios del código que ha puesto belvg , ya que dependiendo de una cosa u otra, a que modificar el código.
     

Compartir esta página