SmythSys IT Consulting

Rellenar masivamente el atributo ALT de las imágenes de productos en Prestashop.

Cuando un cliente con una web en Prestashop empieza a preocuparse por el posicionamiento o SEO, una de las cosas que le indican es que las imágenes de sus productos tienen que tener el atributo ALT. Pero es muy habitual que nos olvidemos de rellenar ese campo, llamado Leyenda en Prestashop, cuando subimos una imagen.

Por lo tanto…te puedes encontrar que tienes que cambiar miles de fotos, y manualmente no es muy agradable. Hoy te enseñamos a hacerlo masivamente por base de datos.

NOTA: obviamente haz una copia de seguridad de la base de datos antes de hacer esto, para poder volver atrás en caso de fallo. Y pon tu tienda en mantenimiento para evitar que entren pedidos que pierdas si tienes que restaurar. No nos responsabilizamos de errores que puedan surgir usando este tutorial.

Qué es el atributo ALT de la las imágenes y por qué es importante.

Al atributo o etiqueta ALT de las imágenes es una etiqueta de texto que se le pone indicando el contenido de la imagen. Google penaliza si una imagen no tiene dicho atributo porque lo considera importante. Es útil para los siguientes casos (entre otros):

  • en caso de que la imagen no se pueda cargar (por error de red o error de la web), aparece ese texto y así el visitante sabe qué debería contener.
  • ese es el texto que usan los lectores de pantalla de las personas con problemas de visión para indicar el contenido de la imagen.
  • los robots de los buscadores usan ese texto para identificar y contextualizar el contenido. Ellos sólo “ven” ese texto. Sin él, no entienden la imagen.

Cómo rellenar el campo Leyenda (atributo ALT) en las imágenes de Prestashop de manera masiva.

Para hacer esto, que puede ahorrarte mucho trabajo, vamos a usar consultas de la base de datos. Podemos usar un gestor como phpMyAdmin que suele venir en muchos paneles, o que podemos subir por FTP, o podemos usar un gestor de un sólo fichero como Adminer y subirlo por FTP.

Estos son los pasos:

  • Recomiendo poner la tienda en mantenimiento para que no entren pedidos. No es imprescindible, pero si muy recomendable por si tienes que volver hacia atrás.
  • Realiza una copia de seguridad de la base de datos. No podemos recalcarlo demasiado. Siempre ten un plan B por si algo sale mal.
    Para ello puedes usar la opción de respaldo de la base de datos de Prestashop (en Parámetros Avanzados-> Base de datos) o exportar con Adminer o phpMyAdmin. Yo recomiendo hacer ambas….nunca se tienen suficientes copias de seguridad.
  • En estos códigos estoy suponiendo los idiomas instalados español (ID=1) e inglés (ID=7). Tanto los idiomas como los IDs pueden variar. Compruéba cuales son en tu tienda yendo a Internacional->Localización->Idiomas. Apunta los IDs y ejecuta los códigos según los ids de idioma que tengas.
  • Vamos a ir a consultas SQL (depende del gestor usado estará en un apartado u otro). y vamos a usar los siguientes comandos.

Nota: voy a poner el ejemplo en el que sólo ponemos en el ALT el título del producto en la primera imagen y en las siguientes haremos “Título de producto + Vista 1“, “Título de producto + Vista 2″, etc, pero podéis usar estos comandos como base para otras combinaciones.
Nota 2: recordad que la primera imagen no tiene por qué ser la destacada. No he querido complicar las cosas viendo si es destacada o no, al final lo importante es que tengan ALT.
Nota 3: recuerda comprobar los idiomas y los IDs de idiomas que tengas.

Para las primeras imágenes subidas del producto.

Español

UPDATE
  ps_image_lang lan
  INNER JOIN ps_image im ON (im.id_image=lan.id_image)
  INNER JOIN ps_product_lang plan ON (plan.id_product=im.id_product) AND (lan.id_lang=plan.id_lang)
SET
  lan.legend = plan.name
WHERE
  lan.legend = ' ' AND im.position=1 AND plan.id_lang=1;

Inglés

UPDATE
  ps_image_lang lan
  INNER JOIN ps_image im ON (im.id_image=lan.id_image)
  INNER JOIN ps_product_lang plan ON (plan.id_product=im.id_product) AND (lan.id_lang=plan.id_lang)
SET
  lan.legend = plan.name
WHERE
  lan.legend = ' ' AND im.position=1 AND plan.id_lang=7;

Para la segunda imagen de cada producto.

Español

 UPDATE
  ps_image_lang lan
  INNER JOIN ps_image im ON (im.id_image=lan.id_image)
  INNER JOIN ps_product_lang plan ON (plan.id_product=im.id_product) AND (lan.id_lang=plan.id_lang)
SET
  lan.legend = CONCAT(plan.name,' Vista 2')
WHERE
  lan.legend = ' ' AND im.position=2 AND plan.id_lang=1;

Inglés.

UPDATE
  ps_image_lang lan
  INNER JOIN ps_image im ON (im.id_image=lan.id_image)
  INNER JOIN ps_product_lang plan ON (plan.id_product=im.id_product) AND (lan.id_lang=plan.id_lang)
SET
  lan.legend = CONCAT(plan.name,' View 2')
WHERE
  lan.legend = ' ' AND im.position=2 AND plan.id_lang=7;

Como podéis imaginar, el resto de imágenes sólo tenéis que ir cambiando el im.position (3 para la tercera imagen de los productos, 4 para la cuarta etc). Y para el idioma cambiar el id_lang con vuestros ID de idiomas.

Si queréis saber hasta cuándo tenéis que ejecutar estos códigos, hasta que posición de imagen, podéis:

  • Ejecutarlos hasta que diga “0 filas cambiadas”.
  • Ir a la tabla ps_image, ordenar por le campo position de mayor a menor y veréis cual es el número mayor de posiciones de imagen que tenéis que usar.

Os lo mostramos en un vídeo:

Deja un comentario

Resumen de nuestra Política de Privacidad

  • Responsable: SmythSys IT Consulting SLNE.
  • Finalidad: Gestionar y moderar los comentarios.
  • Legitimación: Necesitas dar tu consentimiento para publicar un comentario.
  • Destinatarios: Tus datos se alojan en los servidores de OVH.
  • Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos en la dirección del responsable (en nuestra política de privacidad).