Hace un tiempo busqué un poco como añadir la etiqueta «Canonical» en ciertas partes de una tienda Prestashop. Creo recordar que algunos módulos hay por ahí (no sé si de pago o gratis). Pero como siempre me he decantado por añadir esta etiqueta (que tanto bien hará al SEO de nuestra web) de manera manual en el header.tpl de nuestro theme Prestashop.
La etiqueta canónical la vamos a aplicar sobre las siguientes partes de la tienda: Categorías, productos, páginas cms y productos manufacturados.
Para el que todavía no tenga muy claro cual es la función de la etiqueta rel=»canonical» diremos a groso modo que se encarga de decirle a los buscadores qué versión del contenido duplicado es la principal y así siempre saben a qué página prestar atención, evitando que el google pagespeed nos penalice por contenido duplicado.
Por ejemplo, supongamos que si tienes una tienda online de ceniceros usados. Tienes un catálogo tan amplio que para facilitar la búsqueda en función del presupuesto has creado un filtro que ordena los ceniceros por precio.
Resulta que la idea beneficia tremendamente al usuario. Ahora podrás encontrar rápidamente el cenicero que se ajusta mejor a sus necesidades. Pero el filtro añade un parámetro al final de la URL, separado por el caracter ampersand (&):
&orden=precio
Ahora la misma página pueden encontrarse en dos URLs, la original y la que contiene el nuevo parámetro:
- &orden=precio
Este es el clásico problema de contenido duplicado, y la solución es la etiqueta Rel=Canonical que se situará en código HTML de las páginas y que señala la versión original, de forma que el buscador sabe qué página debe indexar y cuál ignorar.
Añade la etiqueta canonical en Prestashop 1.5/1.6
Bueno, ahora que todo está más claro. Como ya he dicho antes nos dirigiremos al archivo head.tpl de nuestro Prestashop. En mi caso lo he probado con la versión 1.6.1.1. Pero estoy seguro de que funcionará con todas las versiones desde la 1.5. En las anteriores ya no he probado.
Una vez abierto, tendremos que pegar lo siguiente entre <head> y </head>
{if $page_name == 'category'}
{foreach $languages as $lang}{/foreach}
{/if}
{if $page_name == 'product'}
{foreach $languages as $lang}{/foreach}
{/if}
{if $page_name == 'cms'}
{foreach $languages as $lang}{/foreach}
{/if}
{if $page_name == 'manufacturer'}
{foreach $languages as $lang}{/foreach}
{/if}
Como digo cada cual tendrá que comprobar a que partes de su web quiere aplicar rel=»canonical». A mi lo que acabo de dejar escrito me ha resultado útil. Próximamente más unos y ceros.
14 Comentarios
Correcto. Ademas de salir canonical en las categorías de producto y sus productos, con el código que has puesto arriba entiendo que también debería salir en categorías del blog y los post, pero no es así.
¿Qué me falta poner en el código? Las categorías y post es que se llaman de otra manera.
Por ejemplo algo así o qué:
{if $page_name == ‘category-post’}
……..
{if $page_name == ‘post’}
……..
Tú metiendo ese código que pusiste en el inicio del post ya te ponía el canonical en las categorías de los blogs y en todos los post???????
Muchas gracias
No. El código que he puesto servía para colocar la etiqueta canonical en las categorías, productos y páginas de Prestashop. No aparecerá en los artículos del blog ni en sus categorías. Efectivamente tendrías que cambiar el nombre como indicas. No sé que como se llaman las partes que quieres poner tú, pero si buscas en el código de tu tienda obtendrás los nombres adecuados. Supongo que también dependerá de que tipo de blog tengas, si es un blog incrustado en prestashop o si es un embed.
Espero haberte orientado. Si encuentras los nombres del pagename para el blog, te agradecería que los dejases en otro comentario indicando que clase de blog utilizas, por si a alguien le puede valer.
Salu2.
Buenas SapoClay
He añadido a una tienda de prestashop el código que has puesto mas este para la pagina index.
{if $page_name == ‘index’}
getPageLink(‘index’, ‘true’, $id_lang)}» />
{if $languages|@count > 1}{foreach $languages as $lang}getPageLink(‘index’, ‘true’, $lang.id_lang)}» />{/foreach}{/if}
{/if}
He compilado y he verificado que sale en categorías, productos y páginas, a excepción de la página del formulario y el blog y sus post.
Por que puede ser esto???
Un saludo
Hola. Creo que no entiendo tu pregunta. Has verificado que la etiqueta canonical sale en categorías, productos y páginas, que es lo que tiene que hacer según el código del artículo. ¿Buscas también que salga en la página del fomulario, el blog y sus posts?
Muchas gracias SapoClay, voy a esperar y verificaré! Gracias por tu aporte
De nada. Espero haberte sido de ayudado. Cuando verifiques te recomiendo que lo hagas con varios servicios, no te ciñas a uno solo. Gracias por la visita. Salu2.
Gracias por la ayuda pero lo que no entiendo es ese codigo donde se pone? en header.tpl? O se hace por partes? Es decir, cogemos la primera parte y lo pegamos en «blockcategories», el segundo en «productscategory» y asi?
Hola. El código que se muestra en el post lo deberías colocar en el archivo .tpl de la cabecera (ya que es el que se va a cargar si o si, en todas las páginas de tu web). Selecciona las partes del código donde necesites que se aplique la etiqueta canonical. Si quieres que se aplique en las categorias añadirás $page_name == ‘category’, si quieres que se aplique en los productos añadirás $page_name == ‘product’, y así sucesivamente. Pero como te digo, todo va dentro del mismo archivo entre el head y /head.
Espero haberte ayudado. Salu2 y gracias por la visita.
He usado onpage.org para verificar que le falta a mi web. Puse el codigo en /themes/midominio en header.tpl en la primera línea despues de y al verificar mi pagina en onpage.org me sale que falta la etiqueta canonica. Sabes si tengo que esperar dias para que se reconozca? :S
Hola. Si lo escribes después de la etiqueta head y estas seguro de que estás escribiendo bien los nombres de los tipos de página en las que quieres que funcione la etiqueta canonical, debería funcionar. Yo lo comprobé en el código fuente de la página en cuestión (Ctrl+U y buscando canonical). Me parece que lo había comprobado con gtmetrix y algún otro portal que te analiza la web, y me aparecía. En cuanto a lo que me dices de si tienes que esperar días, supongo que no, pero eso imagino que lo dirán en algún sitio, en la web que estés utilizando para comprobar tu web. Salu2.
Hola,
Un post estupendo, en muchas webs explican de que va todo esto de Rel=Canonical, pero no nos dicen como solucionarlo.
¿Entiendo que añadiendo la parte de código perteneciente a «category» y «producto» estamos estableciendo la etiqueta canonical para todas las variables, es decir, en categorías (pecio, más barato, a – z…) y en los productos (colores, tamaño)?
Muchas gracias por la ayuda
Hola, en primer lugar, gracias por la visita. En segundo lugar decirte que eso que preguntas es correcto. Coloca el código en el head.tpl de tu prestashop y todas las url pertenecientes a category y producto tendrán rel=»canonical». A mi me ha funcionado en prestashop 1.5, 1.6 y 1.6.1.
Salu2.
Si no fuese por el error de los es un gran apunte. ¿el nombre de las páginas en las que se aplica la etiquéta canonical es el nombre que le das en prestashop?. Gracias por el consejo
El nombre de las páginas variarán en función de las que tú utilices en tu WP. Salu2 y de nada ;)