El 9 de octubre recibí un mensaje de Seach Console advirtiendo que la web tiene implementado incorrectamente la etiqueta hreflang en mi prestashop.
En el Panel de Control de Seach Console, en el apartado Segmentación Internacional, la gráfica muestra que el error se detectó el 4 de octubre (más o menos desde que actualiamos el prestashop 1.6.1.7).
Sin tener acceso al código html del prestashop, ¿CÓMO PUEDO ACCEDER A CADA PAGINA DE IDIOMA PARA CREAR UNA ETIQUETA DE RETORNO AL IDIOMA ORIGINAL?
Sé que cada idioma debe contemplar los idiomas en los que se encuentra esa versión.
Otro aspecto que no entiendo, es que esto debería hacerlo automaticamente el prestashop al proporcionar la opción de idiomas. Por lo que, el problema es un error de implementación del mismo prestashop y deberían solucionarlo ellos o al menos facilitar cómo hacerlo.
Como webmaster de la web, tengo acceso a todo pero mis conocimientos son limitados y no encontrado nada que se ajuste a este error de implementación del hreflang en prestashop.
URL del sitio: Contenido solo visible a usuarios registrados
Hola Jose.
Para habilitar estas etiquetas, que sin duda, ayudarán mucho a mejorar el SEO de prestashop, tienes que hacer uso correctamente de la clase $link y las funciones getCategoryLink, getProductLink, getCMSLink, getManufacturerLink y añadirlas en el header.tpl (dentro del del documento) de tu tema.
.- Edita el archivo header.tpl que encontraras en themes/tuplantilla/header.tpl
.- Añade este código dentro del del archivo:
{if $page_name == 'category'} getCategoryLink($smarty.get.id_category, null, $id_lang,null,null )}" /> {foreach $languages as $lang}getCategoryLink($smarty.get.id_category, null, $lang.id_lang,null,null )}" />{/foreach} {/if} {if $page_name == 'product'} getProductLink($smarty.get.id_product, null, null, null, $id_lang, null, 0, false)}" /> {foreach $languages as $lang}getProductLink($smarty.get.id_product, null, null, null, $lang.id_lang, null, 0, false)}" />{/foreach} {/if} {if $page_name == 'cms'} getCMSLink($smarty.get.id_cms, null, false, $id_lang)}" /> {foreach $languages as $lang}getCMSLink($smarty.get.id_cms, null, false, $lang.id_lang)}" />{/foreach} {/if} {if $page_name == 'manufacturer'} getManufacturerLink($smarty.get.id_manufacturer, null, null, null, $id_lang, null, 0, false)}" /> {foreach $languages as $lang}getManufacturerLink($smarty.get.id_manufacturer, null, null, null, $lang.id_lang, null, 0, false)}" />{/foreach} {/if}
En el ejemplo se generan para un sitio multiidioma, sin multitienda y sin https en las siguientes 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.
Nota: Recuerda realizar una copia del archivo antes de cualquier modificación, solo con un copia y pega en el block de notas tendrás suficiente para dejarlo como estaba anteriormente.
Un saludo
Ok, gracias! Voy a probar.
¿Cómo puedo comprobar que está solucionado?
Buenos dias,
¿Como sería para usarlo con https?
Muchas gracias 😉
Hola,
No se si te refieres a cargar tu web con el protocolo https, ya que esto sería un tema distinto.
De ser así, envía un ticket a soporte desde tu área de cliente, ya que desde ahí te podrán dar información sobre cómo instalar un certificado SSL de forma gratuita, requisito imprescindible para cargar la web con https.
Hola,
Me refiero a esto que habeis dicho despues de la solución propuesta:
En el ejemplo se generan para un sitio multiidioma, sin multitienda y sin https...
Mi sitio si tiene certificado SSL instalado
Gracias
Hola
Creo que el código no cambia, ya que veo que se usa la variable $link para recuperar el protocolo con el que se esta trabajando, por lo tanto no deberías tener problemas en usar el código con htttp o con https
href="{$link->
Saludos
Gracias, voy a probarlo.