Añadir canonical y hreflang en Prestashop 1.6.x en header.tpl

Una de las cosas que más echo de menos en prestashop es que de casa en el <head> del documento los <link rel=hreflang> y <link rel=canonical> no estén incluidos. Algo que es de gran utilidad para tiendas online multiidioma, ya que por una parte le indicaremos a los rastreadores cual es el link alternativo para los diferentes idiomas y/o zonas geográficas en las que esté disponible la tienda online y la url canónica del producto, categoría, listado de fabricante, que en muchas ocasiones nos será muy útil para evitar duplicidades y mejorar el SEO de nuestro sitio en los diferentes idiomas en los que se ofrezca.

Para habilitar estas útiles etiquetas, que sin duda, ayudarán mucho a mejorar el SEO de prestashop, tendremos que hacer uso correctamente de la clase $link y las funciones getCategoryLink, getProductLink, getCMSLink, getManufacturerLink y añadirlas en el header.tpl (dentro del <head> del documento) de nuestro tema, sin necesidad de módulos ni hooks extra.

En el ejemplo que ilustra este post, voy a generarlas para un sitio multiidioma, sin multitienda y sin https en los siguientes tipos de páginas: categorías, productos, cms y listado de productos del fabricante / marca. De esta forma todos estos tipos de páginas de la tienda online, tendrán el link canonical y el atributo hreflang.

Link canonical y link hreflang para una tienda online en prestashop 1.6.x que no es multitienda y sin https.

Hay que prestar mucha atención en las variables que se pasan, ya que cada de tienda en prestashop es particular. Si vuestra tienda cumple que no tiene https en el catálogo y es multi idioma podéis copiar y pegar tranquilamente. Para otros casos recomiendo que leaís primero la documentación $link (getCategoryLink, getProductLink, getCMSLink, getManufacturerLink), para evitar “lios” en caso de que existan instalaciones multi tienda, https en todo el catálgo, etc.

¿Si te he ayudado, me invitas a un café?

Artículo relacionado: Urls con hreflang y noindex, problemas avanzados de SEO en ecommerce

16 comentarios en “Añadir canonical y hreflang en Prestashop 1.6.x en header.tpl

  1. El código no funciona para «manufacturer» funciona perfecto pra el resto, pero en manufacturer no devuelve bien la URL, ni para el listado de marcas, ni para las páginas de marca.

    1. Me ocurre lo mismo que a ti, llegaste a solucionarlo?? Funciona bien en todo menos en la página de fabricantes y en los propios fabricantes

        1. La versiones son 1.6.1.4 y 1.6.1.5 Lo he probado en dos páginas distintas. Te he comentado antes un par de veces, dándote más detalles pero luego no me aparece el comentario. Saludos y gracias.

  2. Hola. Tengo éste mismo problema con prestashop. Donde deberia pegar exactamente el código que has pasado?

  3. Hola Fran no estaba contemplado cuando manufactruer == 0, el listado.

    Está arreglado el código y con nuevas mejoras, para INDEX, y también implementado el page next rel para paginación categoría.

    Estoy abierto a donativos por si alguien quiere invitar 🙂 🙂

    1. Hola,para la pagina de fabricantes me sale ahora correcto, sin embargo no así cuando pongo un fabricante en concreto. He hecho la prueba en la versión 1.6.1.4 y he validado con la misma herramienta.

      Me devuelve lo siguiente

      1. http://distribucionesgordito.com/es/9_gracia-hermanos-sa Reciprocal not found
      2. //distribucionesgordito.com/es/9_gracia-hermanos-sa Spanish; Castilian We can’t found link on alternate location!
      3. //distribucionesgordito.com/es/9_gracia-hermanos-sa English We can’t found link on alternate location!

      Gracias por tu ayuda

  4. Buenos dias,
    El manual y aporte del código es magnífico pero hay un pequeño error, el hreflang debe ir definido por el código de pais y código del lenguaje, en este caso no está así.
    En vez de utilizar {$lang.iso_code} debes utiliza {$lang.language_code}

    Un saludo.
    David Escudero Sánchez.
    https://davidescudero.com

  5. Hola Ruben, disculpa una pregunta tan tonta… pero cual es la ruta en Prestashop 1.7

    dentro de mi tema, en el archivo header.tpl no veo la etiqueta head
    no lo entiendo…

    muchas gracias

      1. Hola Ruben, yo tengo la versión 1.7.2.1
        no me atrevo a probar… mis conocimientos de códigos son nulos….
        Si un día te sobra un rata y lo actualizas avísame jej

        Muchas gracias por tu respuesta y el por el blog, esta genial, no podría vivir sin vuestra ayuda jej graciassss

Los comentarios están cerrados.