Sitemap Prestashop
Desde que prestashop lanzó su actualización para la rama 1.5.x muchos nos hemos encontrado con un problema en el sitemap que genera el módulo gsitemap, otros, ni siquiera se han dado cuenta, como todo en esta vida hay quién comprueba de vez en cuando que todo funciona correctamente, y hay quién una vez montada su tienda, se olvida por completo de estos detalles.
¿Qué es el sitemap o mapa de sitio?
El sitemap o mapa de sitio, es una lista de todas las páginas que se encuentran en nuestra web, de esta forma, cuando enviamos a los buscadores nuestro Sitemap, le es más fácil encontrar las páginas que contienen nuestro sitio, por lo tanto, la indexación será mucho más acertada y sencilla para los buscadores, en otras palabras, le facilitamos las cosas a los buscadores diciéndoles qué deben indexar de nuestra página, pudiendo si queremos, eliminar ciertas URL nuestro sitemap.
Una descripción más detallada se puede encontrar en Wikipedia en esta entrada.
¿Qué problema presenta Prestashop?
Bajo mi punto de vista, y que conste que es una opinión personal bajo mi experiencia… Prestashop, es una de las mejores herramientas para ecommerce que existen a día de hoy, pero si nos hemos de parar a mirar su soporte o su atención al cliente, por llamarlo de alguna forma, resulta que son malos con avaricia. De todas las consultas que puedo haberles enviado a lo largo de mis 5 años experimentando con ellos, no me han respondido ni una sola vez, así que la comunidad de usuarios, es la que solventa las papeletas en la mayoría de ocasiones, tanto es así, que por ejemplo, a pesar de que en la versión 1.5 este problema ya se presentase, en su versión 1.5.6.1 sigue sucediendo, y creedme, ellos lo saben.
Dicho esto, os planteo el problema para que podáis comprobar si os sucede.
Si nos dirigimos a los módulos de prestashop, y buscamos por el término “sitemap“, encontraremos el módulo de Prestashop que nos permite generar nuestro mapa de sitio. Bien, es tan sencillo como marcar las páginas que no queremos que indexen los buscadores y darle al botón Generar.
Una vez generado, debemos ir por ejemplo a Google Webmaster tools, y allí iremos a la opción de sitemaps para introducir nuestro sitemap. El problema llega cuando al subirlo, nos encontramos con un error como el de esta imágen.
Básicamente lo que nos dice esta imágen es que hay un error en las fechas generadas por el sitemap, pero que no cunda el pánico, tiene solución!!.
Solución al Sitemap de prestashop
Bien, para solucionarlo, sólo nos hemos de conectar a nuestro sitio por FTP, una vez ahí, nos dirigimos a la carpeta /modules/gsitemap/ y abrimos el archivo gsitemap.php con nuestro editor de texto preferido.
Buscamos la línea número 304 y sustituímos lo siguiente:
Original:
$products_id = Db::getInstance()->ExecuteS('SELECT p.`id_product` FROM `'._DB_PREFIX_.'product` p INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON p.id_product = pl.id_product WHERE p.`active` = 1 AND p.`id_product` > '.(int)$id_product.(($this->tableColumnExists(_DB_PREFIX_.'product', 'id_shop')) ? ' AND pl.`id_shop` = '.(int)$this->context->shop->id : '').' AND pl.`id_lang` = '.(int)$lang['id_lang'].' ORDER BY `id_product` ASC');
Sustuir por:
+ $products_id = Db::getInstance()->ExecuteS('SELECT p.`id_product` FROM `'._DB_PREFIX_.'product` p INNER JOIN `'._DB_PREFIX_.'product_lang` pl ON p.id_product = pl.id_product WHERE p.`active` = 1 AND p.`id_product` > '.(int)$id_product.(($this->tableColumnExists(_DB_PREFIX_.'product_lang', 'id_shop')) ? ' AND pl.`id_shop` = '.(int)$this->context->shop->id : '').' AND pl.`id_lang` = '.(int)$lang['id_lang'].' ORDER BY `id_product` ASC');
Una vez hayamos realizado este cambio, generamos de nuevo el Sitemap, y lo enviamos otra vez al índice de Google. Tema solucionado !!!
PD: Vale, soy consciente de que hay gente que no se atreve a tocar el código, así que aquí os dejo para descargar el sitemap correcto para prestashop 🙂