PrestaShop: inserir imagens de categorias a partir dos produtos

Surgiu a necessidade de inserir imagens nas cerca de 750 categorias de uma loja PrestaShop. Obviamente que não era possível fazê-lo à mão, por isso fiz um pequeno script que percorre todas as categorias e usa uma imagem de um produto dentro dessa categoria (ou sub-categoria).

Assim, todas as categorias terão uma imagem relevante, evitando aparecer a imagem por defeito em todas as páginas. Se estiverem numa situação semelhante à minha, podem usar este script.

Instruções de uso:

  • Descomprimir o arquivo (ou copiar o script para um ficheiro chamado category_image.php)
  • Alterar, se necessário, a variável db_prefix
  • Colocar o ficheiro category_image.php na pasta principal da vossa loja
  • Executar o ficheiro através do browser (exemplo: http://example.com/category_image.php )

Se tudo correr bem, aparecerá uma mensagem a indicar quantas imagens de categoria foram alteradas.

Download

  • Paulo Roberto

    Ola bom dia muito boa essa contribuição so estou com um problema eu trabalho com 3 nivei de categorias…….CATEGORIAS-SUBCATEGORIAS -SUBCATEGORIAS eo arquivo insere as imagens apenas nos dois primeiros niveis
    é possivelç alterar isso para que insira imagens em todos os niveis?
    att
    Paulo

  • Paulo Roberto

    acontece esse erro
    Warning: getimagesize(img/p/8592-8592.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/8592-8592.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/8592-8592.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/8592-8592.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/8592-8592.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/685-685.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/685-685.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/685-685.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/685-685.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/685-685.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/1348-1348.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/1348-1348.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/1348-1348.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/1348-1348.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/1348-1348.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/3207-3207.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/3207-3207.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/3207-3207.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/3207-3207.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Warning: getimagesize(img/p/3207-3207.jpg) [function.getimagesize]: failed to open stream: No such file or directory in /home2/pirilam1/public_html/category_image.php on line 107

    Fatal error: Maximum execution time of 30 seconds exceeded in /home2/pirilam1/public_html/category_image.php on line 147

  • Olá Paulo,

    O script funciona para qualquer número de sub-categorias.

    Para além de algumas imagens que não existem, o problema é que o script não tem tempo para acabar de copiar as imagens. Se tiver a possibilidade de alterar o tempo máximo de execução nas configurações do PHP, faça-o.

    Se não for possível, experimente alterar o foreach que está ao inicio, com o comentário “Percorrer categorias” pelo seguinte código:

    Tente poucas categorias de cada vez. Altere a variavel “min” e “max” de um modo incremental. Primeiro faça de 0 a 5, depois de 5 a 10, depois de 10 a 15, etc. Pode experimentar usar intervalos maiores.

    Cumprimentos,
    Miguel Duarte