moraira Posted June 8, 2015 Share Posted June 8, 2015 (edited) esta mañana hemos encontrado un error en el rastreo de google que seguramente más de uno lo tenéis, por eso lo postéo por aquí. el fallo esta en la función que obtiene los links de las categorías, hemos detectado que el modulo google sitemap crea un link de una categoría que realmente no existe, que es la categoría inicio. La tabla categorías tiene una categoría inicial llamada root (id=1) y después otra llamada inicio (id=2) a partir de ahí empiezan las categorías que tengamos en la tienda, si entráis en el menu categorías veréis que la primera que hay tiene id=3 Esto genera una url que no existe y google sitemap la identifica como error en nuestro caso la url es www.mitienda.com/es/home Para solucionar esto basta hacer que la función correspondiente de gsitemap.php empiece por la categoría 3 que en nuestro caso es la primera que vemos al entrar en la pantalla categorías. La modificación es simplemente decirle al final de la función que filtre por `id_category` > 2 en lugar de `id_category` > 0, es decir que private function _getCategoryLink(&$link_sitemap, $lang, &$index, &$i, $id_category = 0) { $link = new Link(); if (method_exists('ShopUrl', 'resetMainDomainCache')) ShopUrl::resetMainDomainCache(); $categories_id = Db::getInstance()->ExecuteS( 'SELECT c.id_category FROM `'._DB_PREFIX_.'category` c INNER JOIN `'._DB_PREFIX_.'category_shop` cs ON c.`id_category` = cs.`id_category` WHERE c.`id_category` >= '.intval($id_category).' AND c.`active` = 1 AND c.`id_category` != 1 AND c.id_parent > 0 AND c.`id_category` > 0 AND cs.`id_shop` = '.(int)$this->context->shop->id.' ORDER BY c.`id_category` ASC' ); lo cambiamos por private function _getCategoryLink(&$link_sitemap, $lang, &$index, &$i, $id_category = 0) { $link = new Link(); if (method_exists('ShopUrl', 'resetMainDomainCache')) ShopUrl::resetMainDomainCache(); $categories_id = Db::getInstance()->ExecuteS( 'SELECT c.id_category FROM `'._DB_PREFIX_.'category` c INNER JOIN `'._DB_PREFIX_.'category_shop` cs ON c.`id_category` = cs.`id_category` WHERE c.`id_category` >= '.intval($id_category).' AND c.`active` = 1 AND c.`id_category` != 1 AND c.id_parent > 0 AND c.`id_category` > 2 AND cs.`id_shop` = '.(int)$this->context->shop->id.' ORDER BY c.`id_category` ASC' ); no es excesivamente grave pero mejor asegurarnos de que nuestro sitemap no tiene errores 404. No estoy seguro si este fallo depende de la configuración del arbol de categorías o no, y por tanto si se trata de un error genérico o sólo lo tenemos los que hemos modificado dicho arbol pero en todo caso no esta de más saber como se puede solucionar. Edited June 8, 2015 by moraira (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts