Jump to content

Recommended Posts

Bonjour,

 

Je confirme, le module gsitemap prestashop 1.5 en version multiboutique ne fonctionne pas.

 

Pour ma part j'ai le message suivant :

 

Erreur durant la création du fichier sitemap

Warning

: fopen(/home/www/b9ff8c735651f9da0851e81704af4f4d/web/modules/gsitemap/../../sitemap-1.xml) [

function.fopen

]: failed to open stream: Permission denied in

/home/www/b9ff8c735651f9da0851e81704af4f4d/web/modules/gsitemap/gsitemap.php

on line

314

 

Warning

: fwrite(): supplied argument is not a valid stream resource in

/home/www/b9ff8c735651f9da0851e81704af4f4d/web/modules/gsitemap/gsitemap.php

on line

315

 

Warning

: fclose(): supplied argument is not a valid stream resource in

/home/www/b9ff8c735651f9da0851e81704af4f4d/web/modules/gsitemap/gsitemap.php

on line

316

 

Si quelqu'un à une idée ;-)

 

PS : les droits en écriture on été donné sur le dossier et fichiers gsitemap

Merci

Edited by speedscuba (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour,

 

le sitemap ne marche que s'il y a qu'une seule boutique (principale)

En multiboutique le sitemap ne prend que la première boutique se qui oblige à avoir tous les produits des autre boutiques sur la 1ère boutique

 

Pour ma part j'ai fait comme ça :

 

Ma boutique 1 est sans produit car page d'accueil de mes autres boutiques virtuelle

 

http://www.lecoindesvelos.com

 

j'ai créé un sitemap pour chacune de mes boutiques sitemap-1 sitemap-2 etc..

que j'ai rempli avec un logiciel externe et que j'ai envoyé à Google

 

voilà le resultat du sitemap dans le BO déporté exemple sitemat principal correspond à Sitemap pour : www.lecoindesvelos.com/

 

 

Sitemap principal

Votre fichier Google sitemap est en ligne à l'adresse suivante :

http://www.lecoindesvelos.com/sitemap.xml

 

Sitemap pour : www.lecoindesvelos.com/

Votre fichier Google sitemap est en ligne à l'adresse suivante :

http://www.lecoindesvelos.com/sitemap-1.xml

 

Mise à jour Tuesday 13 November 2012 11:51:32

Taille du fichier 1.259MB

Nombre de pages indexées : 5457

 

Sitemap pour : www.lecoindesvelos.com/bmx/

Votre fichier Google sitemap est en ligne à l'adresse suivante :

http://www.lecoindesvelos.com/bmx/sitemap-2.xml

 

Mise à jour Tuesday 13 November 2012 11:54:32

Taille du fichier 0.385MB

Nombre de pages indexées : 1555

 

Sitemap pour : www.lecoindesvelos.com/piecesderechange/

Votre fichier Google sitemap est en ligne à l'adresse suivante :

http://www.lecoindesvelos.com/piecesderechange/sitemap-3.xml

 

Mise à jour Tuesday 13 November 2012 12:01:04

Taille du fichier 0.112MB

Nombre de pages indexées : 486

 

etc..

 

Problème car apparemment les photos ne sont pas pris en compte par Google

 

Si quelqu'un a une autre idée!

 

Merci d'avance

Link to comment
Share on other sites

non juste une page blanche quand je clique pour générer et rien dans sitemap.xml.

J'ai la version 1.9 je sais pas si c'est la bonne a force de faire des mise à jour depuis la première version 1.5.0

de toute façon des bugs partout vivement la prochaine version de prestashop.

Link to comment
Share on other sites

Trouvé pour moi !!!!! Désinstaller le module gsitemap, aller dans le fichier gsitemap.php qui est dans le dossier modules bien sûr.

Ligne 209 :

$tmpLink = $this->context->link->getProductLink((int)($product['id_product']), $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']));

Remplacé la ligne ci-dessus par :

$tmpLink = $this->context->link->getProductLink($product, $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']), $id_shop, 0, true);

  • Like 3
Link to comment
Share on other sites

Non je ne suis pas en multiboutique.

Je n'avais pas trop regardé la fin de mon sitemap mais il me reste encore 4 url bizarre..

<url><loc>http://www.libertiss.com/index.php?controller=new-products</loc><priority>0.5</priority><changefreq>monthly</changefreq></url><url><loc>http://www.libertiss.com/index.php?controller=prices-drop</loc><priority>0.5</priority><changefreq>monthly</changefreq></url><url><loc>http://www.libertiss.com/index.php?controller=stores</loc><priority>0.5</priority><changefreq>monthly</changefreq></url><url><loc>http://www.libertiss.com/index.php?controller=authentication</loc><priority>0.5</priority><changefreq>monthly</changefreq></url><url><loc>http://www.libertiss.com/index.php?controller=best-sales</loc><priority>0.5</priority><changefreq>monthly</changefreq></url><url><loc>http://www.libertiss.com/index.php?controller=contact-form</loc><priority>0.5</priority><changefreq>monthly</changefreq></url>

Link to comment
Share on other sites

  • 3 weeks later...

Bonjour, quelqu’un a t'il a t'il réussi a faire fonctionner gsitemap correctement en multiboutique?

 

Car de mon coté il me génère un sitemap qui redirige vers un sitemap pour chaque boutique.

 

Mais lorsque je le soumet a google il m'indique que toutes les adresses comportent des erreurs, effectivement les url du sitemap sont incomplete.

 

du genre:

 

<loc>http:///index.php?id_product=24&controller=product</loc>

 

au lieu de cela qui est correct

 

<loc>http://www.monsite/index.php?id_product=24&controller=product</loc>

 

Si je déactive le multi boutique tout fonctionne bien

 

Merci

Link to comment
Share on other sites

  • 1 month later...

Trouvé pour moi !!!!! Désinstaller le module gsitemap, aller dans le fichier gsitemap.php qui est dans le dossier modules bien sûr.

Ligne 209 :

$tmpLink = $this->context->link->getProductLink((int)($product['id_product']), $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']));

Remplacé la ligne ci-dessus par :

$tmpLink = $this->context->link->getProductLink($product, $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']), $id_shop, 0, true);

 

MAGINIFIQUE

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...

Bonjour,

Merci pour votre solution. Cependant, dans le cadre d'une boutique multilingue, une seule adresse est générée. il faudrait peut être modifier le code comme suit (ou une solution avoisinante):

ligne 201:

if (!isset($done[$id_product][(int)($product['id_lang'])]['added']))

ligne 213 :

$done[$id_product][(int)($product['id_lang'])]['added'] = true;

 

Juste en dessous ligne 218 il y a aussi le problème de l'image qui est rattachée à la première langue (en) et non à la langue par défaut (fr):

if (!isset($done[$id_product][$id_image]) && $id_image && $product['id_lang']==4)

 

Qu'en pensez-vous ?

Merci beaucoup d'avance.

Edited by Zitoun (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour,

 

Pour moi cette solution sur gsitemap.php a fonctionnée sur prestashop 1.5.3

 

gsitemap.php ligne 209 remplacer par :

 

$tmpLink = $this->context->link->getProductLink((int)($product['id_product']), $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']),null,0,true);

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Bonsoir à tous,

 

Je n'ai pas bien compris un point.; il faut désinstaller le module gsitemap > doit on le réinstaller ensuite ? Y a til une manière spéciale de procéder ou puis je me contenter de le désisnstaller depuis le BO puis une fois le gsitemap.php modifié, je le réinstalle drectement depuis le BO ? Je suis un peu perdu.. merci d'avance.

 

 

Edit : Je viens de penser que du coup, si la manipulation fonctionne, je vais avoir les urls correctement réécrites mais par la même occasion, lorsque je vais resoumettre mon site map à Google, toutes mes pages vont changer d'adresses.. (j'ai 6 pages dans Google..) n'ayant jamais mis en place de redirections permanentes, quelqu'un aurait il un tuto simple pour cela ?

Edited by n0b0dY (see edit history)
Link to comment
Share on other sites

Trouvé pour moi !!!!! Désinstaller le module gsitemap, aller dans le fichier gsitemap.php qui est dans le dossier modules bien sûr.

Ligne 209 :

$tmpLink = $this->context->link->getProductLink((int)($product['id_product']), $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']));

Remplacé la ligne ci-dessus par :

$tmpLink = $this->context->link->getProductLink($product, $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']), $id_shop, 0, true);

 

Sur une 1.5.2.0 le tip fonctionne très bien pour les urls produits.

Merci :)

Link to comment
Share on other sites

Bonjour

avez-vous regardé si la 1.5.4 résout ce problème de sitemap, ou si avec cette release il faut encore bidouiller le sitemap ?

merci de votre avis éclairé sur ce point super important

 

Moi le soucis était encore effectif voici mon fichier modifier pour 1.5.4

 

* @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) exit; class Gsitemap extends Module { private $_html = ''; private $_postErrors = array(); public function __construct() { $this->name = 'gsitemap'; $this->tab = 'seo'; $this->version = '1.9'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Google sitemap'); $this->description = $this->l('Generate your Google sitemap file.'); if (!defined('GSITEMAP_FILE')) define('GSITEMAP_FILE', dirname(__FILE__).'/../../sitemap.xml'); } public function uninstall() { file_put_contents(GSITEMAP_FILE, ''); return parent::uninstall(); } private function _postValidation() { file_put_contents(GSITEMAP_FILE, ''); if (!($fp = fopen(GSITEMAP_FILE, 'w'))) $this->_postErrors[] = sprintf($this->l('Cannot create %ssitemap.xml file..'), realpath(dirname(__FILE__.'/../..')).'/'); else fclose($fp); } private function getUrlWith($url, $key, $value) { if (empty($value)) return $url; if (strpos($url, '?') !== false) return $url.'&'.$key.'='.$value; return $url.'?'.$key.'='.$value; } private function _postProcess() { Configuration::updateValue('GSITEMAP_ALL_CMS', (int)Tools::getValue('GSITEMAP_ALL_CMS')); Configuration::updateValue('GSITEMAP_ALL_PRODUCTS', (int)Tools::getValue('GSITEMAP_ALL_PRODUCTS')); if (Shop::isFeatureActive()) $res = $this->generateSitemapIndex(); else $res = $this->generateSitemap(Configuration::get('PS_SHOP_DEFAULT'), GSITEMAP_FILE); $this->_html .= '
'; $this->_html .= $res ? $this->l('Sitemap file generated.') : $this->l('Error while creating sitemap file.'); $this->_html .= '
'; } /** * Generate sitemap index to reference the sitemap of each shop * * @return bool */ public function generateSitemapIndex() { $xmlString = << XML; $xml = new SimpleXMLElement($xmlString); $sql = 'SELECT s.id_shop, su.domain, su.domain_ssl, CONCAT(su.physical_uri, su.virtual_uri) as uri FROM '._DB_PREFIX_.'shop s INNER JOIN '._DB_PREFIX_.'shop_url su ON s.id_shop = su.id_shop AND su.main = 1 WHERE s.active = 1 AND s.deleted = 0 AND su.active = 1'; if (!$result = Db::getInstance()->executeS($sql)) return false; $res = true; foreach ($result as $row) { $info = pathinfo(GSITEMAP_FILE); $filename = $info['filename'].'-'.$row['id_shop'].'.'.$info['extension']; $replaceUrl = array('http://'.$row['domain'].$row['uri'], ((Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://').$row['domain_ssl'].$row['uri']); $last = $this->generateSitemap($row['id_shop'], $info['dirname'].'/'.$filename, $replaceUrl); if ($last) { $this->_addSitemapIndexNode($xml, 'http://'.$row['domain'].(($row['uri']) ? $row['uri'] : '/').$filename, date('Y-m-d')); } $res &= $last; } $fp = fopen(GSITEMAP_FILE, 'w'); fwrite($fp, $xml->asXML()); fclose($fp); return $res && file_exists(GSITEMAP_FILE); } /** * Generate a sitemap for a shop * * @param int $id_shop * @param string $filename * @return bool */ private function generateSitemap($id_shop, $filename = '', $replace_url = array()) { $langs = Language::getLanguages(); $shop = new Shop($id_shop); if (!$shop->id) return false; $xmlString = << XML; $xml = new SimpleXMLElement($xmlString); if (Configuration::get('PS_REWRITING_SETTINGS') && count($langs) > 1) foreach($langs as $lang) { $this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__.$lang['iso_code'].'/', '1.00', 'daily', date('Y-m-d')); } else $this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__, '1.00', 'daily', date('Y-m-d')); /* Product Generator */ $sql = 'SELECT p.id_product, pl.link_rewrite, DATE_FORMAT(IF(ps.date_upd,ps.date_upd,ps.date_add), \'%Y-%m-%d\') date_upd, pl.id_lang, cl.`link_rewrite` category, ean13, i.id_image, il.legend legend_image, ( SELECT MIN(level_depth) FROM '._DB_PREFIX_.'product p2 '.Shop::addSqlAssociation('product', 'p2').' LEFT JOIN '._DB_PREFIX_.'category_product cp2 ON p2.id_product = cp2.id_product LEFT JOIN '._DB_PREFIX_.'category c2 ON cp2.id_category = c2.id_category WHERE p2.id_product = p.id_product AND product_shop.`active` = 1 AND c2.`active` = 1) AS level_depth FROM '._DB_PREFIX_.'product p LEFT JOIN '._DB_PREFIX_.'product_shop ps ON (ps.id_product = p.id_product AND ps.id_shop = '.(int)$id_shop.') LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (ps.id_category_default = cl.id_category AND pl.id_lang = cl.id_lang AND cl.id_shop = '.(int)$id_shop.') LEFT JOIN '._DB_PREFIX_.'image i ON p.id_product = i.id_product LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image) LEFT JOIN '._DB_PREFIX_.'lang l ON (pl.id_lang = l.id_lang) WHERE l.`active` = 1 AND ps.`active` = 1 AND ps.id_shop = '.(int)$id_shop.' '.(Configuration::get('GSITEMAP_ALL_PRODUCTS') ? '' : 'HAVING level_depth IS NOT NULL').' ORDER BY pl.id_product, pl.id_lang ASC'; $resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->query($sql); // array used to know which product/image was already added (blacklist) $done = null; $sitemap = null; // iterates on the products, to gather the image ids while ($product = Db::getInstance()->nextRow($resource)) { // if the product has not been added $id_product = $product['id_product']; if (!isset($done[$id_product][(int)($product['id_lang'])]['added'])) { // priority if (($priority = 0.7 - ($product['level_depth'] / 10)) < 0.1) $priority = 0.1; // adds the product $tmpLink = $this->context->link->getProductLink($product, $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']), $id_shop, 0, true); $sitemap = $this->_addSitemapNode($xml, $tmpLink, $priority, 'weekly', substr($product['date_upd'], 0, 10)); // considers the product has added $done[$id_product][(int)($product['id_lang'])]['added'] = true; } // if the image has not been added $id_image = $product['id_image']; if (!isset($done[$id_product][$id_image]) && $id_image) { if (!isset($done[$id_product][$id_image]) && $id_image && $product['id_lang']==4) // adds the image $this->_addSitemapNodeImage($sitemap, $product); // considers the image as added $done[$id_product][$id_image] = true; } } /* Categories Generator */ if (Configuration::get('PS_REWRITING_SETTINGS')) $categories = Db::getInstance()->executeS(' SELECT c.id_category, c.level_depth, link_rewrite, DATE_FORMAT(IF(date_upd,date_upd,date_add), \'%Y-%m-%d\') AS date_upd, cl.id_lang FROM '._DB_PREFIX_.'category c LEFT JOIN '._DB_PREFIX_.'category_lang cl ON c.id_category = cl.id_category LEFT JOIN '._DB_PREFIX_.'lang l ON cl.id_lang = l.id_lang WHERE l.`active` = 1 AND c.`active` = 1 AND c.id_category != 1 ORDER BY cl.id_category, cl.id_lang ASC'); else $categories = Db::getInstance()->executeS( 'SELECT c.id_category, c.level_depth, DATE_FORMAT(IF(date_upd,date_upd,date_add), \'%Y-%m-%d\') AS date_upd FROM '._DB_PREFIX_.'category c ORDER BY c.id_category ASC'); foreach($categories as $category) { if (($priority = 0.9 - ($category['level_depth'] / 10)) < 0.1) $priority = 0.1; $tmpLink = Configuration::get('PS_REWRITING_SETTINGS') ? $this->context->link->getCategoryLink((int)$category['id_category'], $category['link_rewrite'], (int)$category['id_lang']) : $this->context->link->getCategoryLink((int)$category['id_category']); $this->_addSitemapNode($xml, htmlspecialchars($tmpLink), $priority, 'weekly', substr($category['date_upd'], 0, 10)); } /* CMS Generator */ if (Configuration::get('GSITEMAP_ALL_CMS') || !Module::isInstalled('blockcms')) $sql_cms = ' SELECT DISTINCT '.(Configuration::get('PS_REWRITING_SETTINGS') ? 'cl.id_cms, cl.link_rewrite, cl.id_lang' : 'cl.id_cms'). ' FROM '._DB_PREFIX_.'cms_lang cl LEFT JOIN '._DB_PREFIX_.'lang l ON (cl.id_lang = l.id_lang) WHERE l.`active` = 1 ORDER BY cl.id_cms, cl.id_lang ASC'; else if (Module::isInstalled('blockcms')) $sql_cms = ' SELECT DISTINCT '.(Configuration::get('PS_REWRITING_SETTINGS') ? 'cl.id_cms, cl.link_rewrite, cl.id_lang' : 'cl.id_cms'). ' FROM '._DB_PREFIX_.'cms_block_page b LEFT JOIN '._DB_PREFIX_.'cms_lang cl ON (b.id_cms = cl.id_cms) LEFT JOIN '._DB_PREFIX_.'lang l ON (cl.id_lang = l.id_lang) WHERE l.`active` = 1 ORDER BY cl.id_cms, cl.id_lang ASC'; $cmss = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql_cms); foreach($cmss as $cms) { $tmpLink = Configuration::get('PS_REWRITING_SETTINGS') ? $this->context->link->getCMSLink((int)$cms['id_cms'], $cms['link_rewrite'], false, (int)$cms['id_lang']) : $this->context->link->getCMSLink((int)$cms['id_cms']); $this->_addSitemapNode($xml, $tmpLink, '0.8', 'daily'); } /* Add classic pages (contact, best sales, new products...) */ $pages = array( 'supplier' => false, 'manufacturer' => false, 'new-products' => false, 'prices-drop' => false, 'stores' => false, 'authentication' => true, 'best-sales' => false, 'contact-form' => true); // Don't show suppliers and manufacturers if they are disallowed if (!Module::getInstanceByName('blockmanufacturer')->id && !Configuration::get('PS_DISPLAY_SUPPLIERS')) unset($pages['manufacturer']); if (!Module::getInstanceByName('blocksupplier')->id && !Configuration::get('PS_DISPLAY_SUPPLIERS')) unset($pages['supplier']); // Generate nodes for pages if(Configuration::get('PS_REWRITING_SETTINGS')) foreach ($pages as $page => $ssl) foreach($langs as $lang) $this->_addSitemapNode($xml, $this->context->link->getPageLink($page, $ssl, $lang['id_lang']), '0.5', 'monthly'); else foreach($pages as $page => $ssl) $this->_addSitemapNode($xml, $this->context->link->getPageLink($page, $ssl), '0.5', 'monthly'); $xml_string = $xml->asXML(); // Replace URL in XML strings by real shops URL if ($replace_url) $xml_string = str_replace(array(Tools::getShopDomain(true).__PS_BASE_URI__, Tools::getShopDomainSsl(true).__PS_BASE_URI__), $replace_url, $xml_string); $fp = fopen($filename, 'w'); fwrite($fp, $xml_string); fclose($fp); return file_exists($filename); } private function _addSitemapIndexNode($xml, $loc, $last_mod) { $sitemap = $xml->addChild('sitemap'); $sitemap->addChild('loc', htmlspecialchars($loc)); $sitemap->addChild('lastmod', $last_mod); return $sitemap; } private function _addSitemapNode($xml, $loc, $priority, $change_freq, $last_mod = NULL) { $sitemap = $xml->addChild('url'); $sitemap->addChild('loc', htmlspecialchars($loc)); $sitemap->addChild('priority', number_format($priority,1,'.','')); if ($last_mod) $sitemap->addChild('lastmod', $last_mod); $sitemap->addChild('changefreq', $change_freq); return $sitemap; } private function _addSitemapNodeImage($xml, $product) { $image = $xml->addChild('image', null, 'http://www.google.com/schemas/sitemap-image/1.1'); $image->addChild('loc', htmlspecialchars($this->context->link->getImageLink($product['link_rewrite'], (int)$product['id_product'].'-'.(int)$product['id_image'])), 'http://www.google.com/schemas/sitemap-image/1.1'); $legend_image = preg_replace('/(&+)/i', '&', $product['legend_image']); $image->addChild('caption', $legend_image, 'http://www.google.com/schemas/sitemap-image/1.1'); $image->addChild('title', $legend_image, 'http://www.google.com/schemas/sitemap-image/1.1'); } private function _displaySitemap() { if (Shop::isFeatureActive()) { $sql = 'SELECT s.id_shop, su.domain, su.domain_ssl, CONCAT(su.physical_uri, su.virtual_uri) as uri FROM '._DB_PREFIX_.'shop s INNER JOIN '._DB_PREFIX_.'shop_url su ON s.id_shop = su.id_shop AND su.main = 1 WHERE s.active = 1 AND s.deleted = 0 AND su.active = 1'; if (!$result = Db::getInstance()->executeS($sql)) return ''; $this->_html .= '
'.$this->l('Sitemap index').'
'; $this->_html .= '
'.$this->l('Your Google sitemap file is online at the following address:').'
'.Tools::getShopDomain(true, true).__PS_BASE_URI__.'sitemap.xml
'; $info = pathinfo(GSITEMAP_FILE); foreach ($result as $shop) { $filename = $info['dirname'].'/'.$info['filename'].'-'.$shop['id_shop'].'.'.$info['extension']; if (file_exists($filename) && filesize($filename)) { $fp = fopen($filename, 'r'); $fstat = fstat($fp); fclose($fp); $xml = simplexml_load_file($filename); $nbPages = count($xml->url); $sitemap_uri = 'http://'.$shop['domain'].$shop['uri'].$info['filename'].'-'.$shop['id_shop'].'.'.$info['extension']; $this->_html .= '
'.$this->l('Sitemap for: ').$shop['domain'].$shop['uri'].'
'; $this->_html .= '
'.$this->l('Your Google sitemap file is online at the following address:').'
'.$sitemap_uri.'
'; $this->_html .= $this->l('Update:').' '.utf8_encode(strftime('%A %d %B %Y %H:%M:%S',$fstat['mtime'])).'
'; $this->_html .= $this->l('Filesize:').' '.number_format(($fstat['size']*.000001), 3).'MB
'; $this->_html .= $this->l('Indexed pages:').' '.$nbPages.'
'; } } } elseif (file_exists(GSITEMAP_FILE) && filesize(GSITEMAP_FILE)) { $fp = fopen(GSITEMAP_FILE, 'r'); $fstat = fstat($fp); fclose($fp); $xml = simplexml_load_file(GSITEMAP_FILE); $nbPages = count($xml->url); $this->_html .= '
'.$this->l('Your Google sitemap file is online at the following address:').'
'.Tools::getShopDomain(true, true).__PS_BASE_URI__.'sitemap.xml
'; $this->_html .= $this->l('Update:').' '.utf8_encode(strftime('%A %d %B %Y %H:%M:%S',$fstat['mtime'])).'
'; $this->_html .= $this->l('Filesize:').' '.number_format(($fstat['size']*.000001), 3).'MB
'; $this->_html .= $this->l('Indexed pages:').' '.$nbPages.'
'; } } private function _displayForm() { if (Tools::usingSecureMode()) $domain = Tools::getShopDomainSsl(true); else $domain = Tools::getShopDomain(true); $this->_html .= '
'.$this->l('Sitemap also includes products from inactive categories.').'
'.$this->l('Sitemap also includes CMS pages not found in a CMS block.').'
'.$this->l('Use cron job to re-build the sitemap:').'
'.$domain.__PS_BASE_URI__.'modules/gsitemap/gsitemap-cron.php?&token='.substr(Tools::encrypt('gsitemap/cron'),0,10).'&GSITEMAP_ALL_CMS='.((int)Configuration::get('GSITEMAP_ALL_CMS')).'&GSITEMAP_ALL_PRODUCTS='.((int)Configuration::get('GSITEMAP_ALL_PRODUCTS')).'
'; } public function getContent() { if (Tools::isSubmit('btnSubmit')) { $this->_postValidation(); if (!count($this->_postErrors)) $this->_postProcess(); else foreach ($this->_postErrors as $err) $this->_html .= '
'.$err.'
'; } $this->_html .= '
'.$this->l('Search Engine Optimization (SEO).').'
'.$this->l('See').' '.$this->l('This page').' '.$this->l('For more information').'
'; $this->_displaySitemap(); $this->_displayForm(); $this->_html .= '
'; return $this->_html; } }

 

Cordialement

Link to comment
Share on other sites

Bonjour,

Merci de l'info, mais cher moi vos données ne sont pas exploitable sous Notepade++

pouvez-vous mètre en pièce jointe le fichier.

Merci

 

Moi le soucis était encore effectif voici mon fichier modifier pour 1.5.4

 

* @copyright 2007-2013 PrestaShop SA * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) * International Registered Trademark & Property of PrestaShop SA */ if (!defined('_PS_VERSION_')) exit; class Gsitemap extends Module { private $_html = ''; private $_postErrors = array(); public function __construct() { $this->name = 'gsitemap'; $this->tab = 'seo'; $this->version = '1.9'; $this->author = 'PrestaShop'; $this->need_instance = 0; parent::__construct(); $this->displayName = $this->l('Google sitemap'); $this->description = $this->l('Generate your Google sitemap file.'); if (!defined('GSITEMAP_FILE')) define('GSITEMAP_FILE', dirname(__FILE__).'/../../sitemap.xml'); } public function uninstall() { file_put_contents(GSITEMAP_FILE, ''); return parent::uninstall(); } private function _postValidation() { file_put_contents(GSITEMAP_FILE, ''); if (!($fp = fopen(GSITEMAP_FILE, 'w'))) $this->_postErrors[] = sprintf($this->l('Cannot create %ssitemap.xml file..'), realpath(dirname(__FILE__.'/../..')).'/'); else fclose($fp); } private function getUrlWith($url, $key, $value) { if (empty($value)) return $url; if (strpos($url, '?') !== false) return $url.'&'.$key.'='.$value; return $url.'?'.$key.'='.$value; } private function _postProcess() { Configuration::updateValue('GSITEMAP_ALL_CMS', (int)Tools::getValue('GSITEMAP_ALL_CMS')); Configuration::updateValue('GSITEMAP_ALL_PRODUCTS', (int)Tools::getValue('GSITEMAP_ALL_PRODUCTS')); if (Shop::isFeatureActive()) $res = $this->generateSitemapIndex(); else $res = $this->generateSitemap(Configuration::get('PS_SHOP_DEFAULT'), GSITEMAP_FILE); $this->_html .= '
'; $this->_html .= $res ? $this->l('Sitemap file generated.') : $this->l('Error while creating sitemap file.'); $this->_html .= '
'; } /** * Generate sitemap index to reference the sitemap of each shop * * @return bool */ public function generateSitemapIndex() { $xmlString = << XML; $xml = new SimpleXMLElement($xmlString); $sql = 'SELECT s.id_shop, su.domain, su.domain_ssl, CONCAT(su.physical_uri, su.virtual_uri) as uri FROM '._DB_PREFIX_.'shop s INNER JOIN '._DB_PREFIX_.'shop_url su ON s.id_shop = su.id_shop AND su.main = 1 WHERE s.active = 1 AND s.deleted = 0 AND su.active = 1'; if (!$result = Db::getInstance()->executeS($sql)) return false; $res = true; foreach ($result as $row) { $info = pathinfo(GSITEMAP_FILE); $filename = $info['filename'].'-'.$row['id_shop'].'.'.$info['extension']; $replaceUrl = array('http://'.$row['domain'].$row['uri'], ((Configuration::get('PS_SSL_ENABLED')) ? 'https://' : 'http://').$row['domain_ssl'].$row['uri']); $last = $this->generateSitemap($row['id_shop'], $info['dirname'].'/'.$filename, $replaceUrl); if ($last) { $this->_addSitemapIndexNode($xml, 'http://'.$row['domain'].(($row['uri']) ? $row['uri'] : '/').$filename, date('Y-m-d')); } $res &= $last; } $fp = fopen(GSITEMAP_FILE, 'w'); fwrite($fp, $xml->asXML()); fclose($fp); return $res && file_exists(GSITEMAP_FILE); } /** * Generate a sitemap for a shop * * @param int $id_shop * @param string $filename * @return bool */ private function generateSitemap($id_shop, $filename = '', $replace_url = array()) { $langs = Language::getLanguages(); $shop = new Shop($id_shop); if (!$shop->id) return false; $xmlString = << XML; $xml = new SimpleXMLElement($xmlString); if (Configuration::get('PS_REWRITING_SETTINGS') && count($langs) > 1) foreach($langs as $lang) { $this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__.$lang['iso_code'].'/', '1.00', 'daily', date('Y-m-d')); } else $this->_addSitemapNode($xml, Tools::getShopDomain(true, true).__PS_BASE_URI__, '1.00', 'daily', date('Y-m-d')); /* Product Generator */ $sql = 'SELECT p.id_product, pl.link_rewrite, DATE_FORMAT(IF(ps.date_upd,ps.date_upd,ps.date_add), \'%Y-%m-%d\') date_upd, pl.id_lang, cl.`link_rewrite` category, ean13, i.id_image, il.legend legend_image, ( SELECT MIN(level_depth) FROM '._DB_PREFIX_.'product p2 '.Shop::addSqlAssociation('product', 'p2').' LEFT JOIN '._DB_PREFIX_.'category_product cp2 ON p2.id_product = cp2.id_product LEFT JOIN '._DB_PREFIX_.'category c2 ON cp2.id_category = c2.id_category WHERE p2.id_product = p.id_product AND product_shop.`active` = 1 AND c2.`active` = 1) AS level_depth FROM '._DB_PREFIX_.'product p LEFT JOIN '._DB_PREFIX_.'product_shop ps ON (ps.id_product = p.id_product AND ps.id_shop = '.(int)$id_shop.') LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product) LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (ps.id_category_default = cl.id_category AND pl.id_lang = cl.id_lang AND cl.id_shop = '.(int)$id_shop.') LEFT JOIN '._DB_PREFIX_.'image i ON p.id_product = i.id_product LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image) LEFT JOIN '._DB_PREFIX_.'lang l ON (pl.id_lang = l.id_lang) WHERE l.`active` = 1 AND ps.`active` = 1 AND ps.id_shop = '.(int)$id_shop.' '.(Configuration::get('GSITEMAP_ALL_PRODUCTS') ? '' : 'HAVING level_depth IS NOT NULL').' ORDER BY pl.id_product, pl.id_lang ASC'; $resource = Db::getInstance(_PS_USE_SQL_SLAVE_)->query($sql); // array used to know which product/image was already added (blacklist) $done = null; $sitemap = null; // iterates on the products, to gather the image ids while ($product = Db::getInstance()->nextRow($resource)) { // if the product has not been added $id_product = $product['id_product']; if (!isset($done[$id_product][(int)($product['id_lang'])]['added'])) { // priority if (($priority = 0.7 - ($product['level_depth'] / 10)) < 0.1) $priority = 0.1; // adds the product $tmpLink = $this->context->link->getProductLink($product, $product['link_rewrite'], $product['category'], $product['ean13'], (int)($product['id_lang']), $id_shop, 0, true); $sitemap = $this->_addSitemapNode($xml, $tmpLink, $priority, 'weekly', substr($product['date_upd'], 0, 10)); // considers the product has added $done[$id_product][(int)($product['id_lang'])]['added'] = true; } // if the image has not been added $id_image = $product['id_image']; if (!isset($done[$id_product][$id_image]) && $id_image) { if (!isset($done[$id_product][$id_image]) && $id_image && $product['id_lang']==4) // adds the image $this->_addSitemapNodeImage($sitemap, $product); // considers the image as added $done[$id_product][$id_image] = true; } } /* Categories Generator */ if (Configuration::get('PS_REWRITING_SETTINGS')) $categories = Db::getInstance()->executeS(' SELECT c.id_category, c.level_depth, link_rewrite, DATE_FORMAT(IF(date_upd,date_upd,date_add), \'%Y-%m-%d\') AS date_upd, cl.id_lang FROM '._DB_PREFIX_.'category c LEFT JOIN '._DB_PREFIX_.'category_lang cl ON c.id_category = cl.id_category LEFT JOIN '._DB_PREFIX_.'lang l ON cl.id_lang = l.id_lang WHERE l.`active` = 1 AND c.`active` = 1 AND c.id_category != 1 ORDER BY cl.id_category, cl.id_lang ASC'); else $categories = Db::getInstance()->executeS( 'SELECT c.id_category, c.level_depth, DATE_FORMAT(IF(date_upd,date_upd,date_add), \'%Y-%m-%d\') AS date_upd FROM '._DB_PREFIX_.'category c ORDER BY c.id_category ASC'); foreach($categories as $category) { if (($priority = 0.9 - ($category['level_depth'] / 10)) < 0.1) $priority = 0.1; $tmpLink = Configuration::get('PS_REWRITING_SETTINGS') ? $this->context->link->getCategoryLink((int)$category['id_category'], $category['link_rewrite'], (int)$category['id_lang']) : $this->context->link->getCategoryLink((int)$category['id_category']); $this->_addSitemapNode($xml, htmlspecialchars($tmpLink), $priority, 'weekly', substr($category['date_upd'], 0, 10)); } /* CMS Generator */ if (Configuration::get('GSITEMAP_ALL_CMS') || !Module::isInstalled('blockcms')) $sql_cms = ' SELECT DISTINCT '.(Configuration::get('PS_REWRITING_SETTINGS') ? 'cl.id_cms, cl.link_rewrite, cl.id_lang' : 'cl.id_cms'). ' FROM '._DB_PREFIX_.'cms_lang cl LEFT JOIN '._DB_PREFIX_.'lang l ON (cl.id_lang = l.id_lang) WHERE l.`active` = 1 ORDER BY cl.id_cms, cl.id_lang ASC'; else if (Module::isInstalled('blockcms')) $sql_cms = ' SELECT DISTINCT '.(Configuration::get('PS_REWRITING_SETTINGS') ? 'cl.id_cms, cl.link_rewrite, cl.id_lang' : 'cl.id_cms'). ' FROM '._DB_PREFIX_.'cms_block_page b LEFT JOIN '._DB_PREFIX_.'cms_lang cl ON (b.id_cms = cl.id_cms) LEFT JOIN '._DB_PREFIX_.'lang l ON (cl.id_lang = l.id_lang) WHERE l.`active` = 1 ORDER BY cl.id_cms, cl.id_lang ASC'; $cmss = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql_cms); foreach($cmss as $cms) { $tmpLink = Configuration::get('PS_REWRITING_SETTINGS') ? $this->context->link->getCMSLink((int)$cms['id_cms'], $cms['link_rewrite'], false, (int)$cms['id_lang']) : $this->context->link->getCMSLink((int)$cms['id_cms']); $this->_addSitemapNode($xml, $tmpLink, '0.8', 'daily'); } /* Add classic pages (contact, best sales, new products...) */ $pages = array( 'supplier' => false, 'manufacturer' => false, 'new-products' => false, 'prices-drop' => false, 'stores' => false, 'authentication' => true, 'best-sales' => false, 'contact-form' => true); // Don't show suppliers and manufacturers if they are disallowed if (!Module::getInstanceByName('blockmanufacturer')->id && !Configuration::get('PS_DISPLAY_SUPPLIERS')) unset($pages['manufacturer']); if (!Module::getInstanceByName('blocksupplier')->id && !Configuration::get('PS_DISPLAY_SUPPLIERS')) unset($pages['supplier']); // Generate nodes for pages if(Configuration::get('PS_REWRITING_SETTINGS')) foreach ($pages as $page => $ssl) foreach($langs as $lang) $this->_addSitemapNode($xml, $this->context->link->getPageLink($page, $ssl, $lang['id_lang']), '0.5', 'monthly'); else foreach($pages as $page => $ssl) $this->_addSitemapNode($xml, $this->context->link->getPageLink($page, $ssl), '0.5', 'monthly'); $xml_string = $xml->asXML(); // Replace URL in XML strings by real shops URL if ($replace_url) $xml_string = str_replace(array(Tools::getShopDomain(true).__PS_BASE_URI__, Tools::getShopDomainSsl(true).__PS_BASE_URI__), $replace_url, $xml_string); $fp = fopen($filename, 'w'); fwrite($fp, $xml_string); fclose($fp); return file_exists($filename); } private function _addSitemapIndexNode($xml, $loc, $last_mod) { $sitemap = $xml->addChild('sitemap'); $sitemap->addChild('loc', htmlspecialchars($loc)); $sitemap->addChild('lastmod', $last_mod); return $sitemap; } private function _addSitemapNode($xml, $loc, $priority, $change_freq, $last_mod = NULL) { $sitemap = $xml->addChild('url'); $sitemap->addChild('loc', htmlspecialchars($loc)); $sitemap->addChild('priority', number_format($priority,1,'.','')); if ($last_mod) $sitemap->addChild('lastmod', $last_mod); $sitemap->addChild('changefreq', $change_freq); return $sitemap; } private function _addSitemapNodeImage($xml, $product) { $image = $xml->addChild('image', null, 'http://www.google.com/schemas/sitemap-image/1.1'); $image->addChild('loc', htmlspecialchars($this->context->link->getImageLink($product['link_rewrite'], (int)$product['id_product'].'-'.(int)$product['id_image'])), 'http://www.google.com/schemas/sitemap-image/1.1'); $legend_image = preg_replace('/(&+)/i', '&', $product['legend_image']); $image->addChild('caption', $legend_image, 'http://www.google.com/schemas/sitemap-image/1.1'); $image->addChild('title', $legend_image, 'http://www.google.com/schemas/sitemap-image/1.1'); } private function _displaySitemap() { if (Shop::isFeatureActive()) { $sql = 'SELECT s.id_shop, su.domain, su.domain_ssl, CONCAT(su.physical_uri, su.virtual_uri) as uri FROM '._DB_PREFIX_.'shop s INNER JOIN '._DB_PREFIX_.'shop_url su ON s.id_shop = su.id_shop AND su.main = 1 WHERE s.active = 1 AND s.deleted = 0 AND su.active = 1'; if (!$result = Db::getInstance()->executeS($sql)) return ''; $this->_html .= '
'.$this->l('Sitemap index').'
'; $this->_html .= '
'.$this->l('Your Google sitemap file is online at the following address:').'
'.Tools::getShopDomain(true, true).__PS_BASE_URI__.'sitemap.xml
'; $info = pathinfo(GSITEMAP_FILE); foreach ($result as $shop) { $filename = $info['dirname'].'/'.$info['filename'].'-'.$shop['id_shop'].'.'.$info['extension']; if (file_exists($filename) && filesize($filename)) { $fp = fopen($filename, 'r'); $fstat = fstat($fp); fclose($fp); $xml = simplexml_load_file($filename); $nbPages = count($xml->url); $sitemap_uri = 'http://'.$shop['domain'].$shop['uri'].$info['filename'].'-'.$shop['id_shop'].'.'.$info['extension']; $this->_html .= '
'.$this->l('Sitemap for: ').$shop['domain'].$shop['uri'].'
'; $this->_html .= '
'.$this->l('Your Google sitemap file is online at the following address:').'
'.$sitemap_uri.'
'; $this->_html .= $this->l('Update:').' '.utf8_encode(strftime('%A %d %B %Y %H:%M:%S',$fstat['mtime'])).'
'; $this->_html .= $this->l('Filesize:').' '.number_format(($fstat['size']*.000001), 3).'MB
'; $this->_html .= $this->l('Indexed pages:').' '.$nbPages.'
'; } } } elseif (file_exists(GSITEMAP_FILE) && filesize(GSITEMAP_FILE)) { $fp = fopen(GSITEMAP_FILE, 'r'); $fstat = fstat($fp); fclose($fp); $xml = simplexml_load_file(GSITEMAP_FILE); $nbPages = count($xml->url); $this->_html .= '
'.$this->l('Your Google sitemap file is online at the following address:').'
'.Tools::getShopDomain(true, true).__PS_BASE_URI__.'sitemap.xml
'; $this->_html .= $this->l('Update:').' '.utf8_encode(strftime('%A %d %B %Y %H:%M:%S',$fstat['mtime'])).'
'; $this->_html .= $this->l('Filesize:').' '.number_format(($fstat['size']*.000001), 3).'MB
'; $this->_html .= $this->l('Indexed pages:').' '.$nbPages.'
'; } } private function _displayForm() { if (Tools::usingSecureMode()) $domain = Tools::getShopDomainSsl(true); else $domain = Tools::getShopDomain(true); $this->_html .= '
'.$this->l('Sitemap also includes products from inactive categories.').'
'.$this->l('Sitemap also includes CMS pages not found in a CMS block.').'
'.$this->l('Use cron job to re-build the sitemap:').'
'.$domain.__PS_BASE_URI__.'modules/gsitemap/gsitemap-cron.php?&token='.substr(Tools::encrypt('gsitemap/cron'),0,10).'&GSITEMAP_ALL_CMS='.((int)Configuration::get('GSITEMAP_ALL_CMS')).'&GSITEMAP_ALL_PRODUCTS='.((int)Configuration::get('GSITEMAP_ALL_PRODUCTS')).'
'; } public function getContent() { if (Tools::isSubmit('btnSubmit')) { $this->_postValidation(); if (!count($this->_postErrors)) $this->_postProcess(); else foreach ($this->_postErrors as $err) $this->_html .= '
'.$err.'
'; } $this->_html .= '
'.$this->l('Search Engine Optimization (SEO).').'
'.$this->l('See').' '.$this->l('This page').' '.$this->l('For more information').'
'; $this->_displaySitemap(); $this->_displayForm(); $this->_html .= '
'; return $this->_html; } }

 

Cordialement

Link to comment
Share on other sites

Bonjour,

 

Je poste ce message car depuis que je suis passé à la version 1.5.4 de prestashop je rencontre une erreur 500 lors de la génération du sitemap.xml. Mes autres sites sont en version 1.5.3.1 et là je n'ai pas ce problème. J'ai regardé et testé les différents script mis à notre dispo dans ce forum, mais rien à faire toujours une erreur 500 avec la création d'un sitemap vide (droit 644 et j'ai essayé avec 755 et 777 rien à faire).

 

Si quelqu'un à la solution je suis preneur.

 

Merci à vous tous.

Link to comment
Share on other sites

Merci pour la correction, mais cher moi ça marche pas pour les produits.

 

Liens du produit

XXX/en/smoke-detector-kidde-smoke-detector-29-en-kidde-1.html

 

Liens généré par le sitemap

XXX/en/smoke-detector/1-kidde-smoke-detector-29-en-0047871072.html

 

Je pense que mon problème vient que j’ai changé la config SEO (Route vers les produits : {category}-{rewrite}-{manufacturer}-{id}.html)

 

Le lien fourni par le sitemap ajoute à la fin le code EAN13, met id au début du non du produit et ne sépare pas la catégorie, bref je pense que le sitemap ne tiens pas en compte les options SEO du back-office.

Edited by axodav (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour SOS :

1.5.3.1. : le module gsitemap plante lors de la 'génération sitemap', je n'ai pas non plus accés par le Ftp pour changer le fichier gsitemap.php par celui modifié (lignes 209,201,213) "access denied", pourtant le CHOM est 777.

 

Merci de m'aider

Link to comment
Share on other sites

Bonjour,

 

Effectivement, la nouvelle version laisse toujours les EAN13 alors que cela n'est pas configuré avec les EAN13 dans la route du SEO.

 

Une idée pour enlever cette EAN13 à la fin malgré que cela soit configuré pour n'afficher que l'id et le nom du produit directement ?

 

Merci

Link to comment
Share on other sites

Hello,

 

Une passe de correction sur ce module est en cours. Encore un peu de patience ^_^

 

La liste des tracks sur la forge

  • PNM-1276 -> index_sitemap.xml not generated
  • PNM-1237 -> gsitmap 2.0 don't follow ceo and url settings
  • PNM-960 -> gsitemap takes the default urls, not mine (possible problem in Dispacher.php)
  • PNM-944 -> sitemap bug and url rewriting
  • PNM-740 -> Wrong url for images in module gsitemap multistore
  • PNM-589 -> gsitemap problem : Fatal error : allowed memory size of 73400320 bytes exhausted (tried to allocate 512 bytes)

Cordialement

Link to comment
Share on other sites

Je vient de tester la dernier version qui est disponible sur Github (voir pièce jointe).

Url rewriting marche sauf que j'ai toujour EAN13 a la fin du lien et le module ne tien pas en compte des configurations personnalisé SEO.

exemple:

{category:/}{rewrite}-{manufacturer}-{id}.html

 

XXX/fr/detecteur-de-fumee/1-detecteur-de-fumee-29-fr-0047871072.html

 

au lieu de

 

XXX/fr/detecteur-de-fumee/detecteur-de-fumee-29-fr-kidde-1.html

gsitemap.zip

Edited by axodav (see edit history)
Link to comment
Share on other sites

Bonjour,

 

Depuis la mise à jours de ma boutique (1.5.2) j'ai 2 problèmes avec le module gsitemap,

 

en version 1.9 il il n'y a pas les url rewriting dans le sitemap que les url classique

et en version 2.1 la génération du sitemap tourne en boucle et lorsqu'elle arrive à sortir quelques choses il me crée plusieurs fichiers sitemap identique mais ne contenant pas toutes les urls du site.

 

quelqu'un a les même problème ou une solution pour moi ?

Link to comment
Share on other sites

Hello,

 

Une passe de correction sur ce module est en cours. Encore un peu de patience ^_^

 

La liste des tracks sur la forge

  • PNM-1276 -> index_sitemap.xml not generated
  • PNM-1237 -> gsitmap 2.0 don't follow ceo and url settings
  • PNM-960 -> gsitemap takes the default urls, not mine (possible problem in Dispacher.php)
  • PNM-944 -> sitemap bug and url rewriting
  • PNM-740 -> Wrong url for images in module gsitemap multistore
  • PNM-589 -> gsitemap problem : Fatal error : allowed memory size of 73400320 bytes exhausted (tried to allocate 512 bytes)

Cordialement

 

Je pense qu'il faut encore patienter ... voilà tout, j'ai les même soucis en prestashop 1.5.4.0 avec gsitemap 1.9 et 2.1 pas moyen d'avoir un sitemap.xml correct. Je vous conseil d'aller générer un fichier depuis un site exterieur et de l'utiliser en attendant (même en multiboutique)

Link to comment
Share on other sites

Non il faut attendre encore un peu, il n'ont pas fini apparemment.

 

TEST UN PEU FOU :

 

(attention à ne pas envoyer tout de suite le sitemap à google si vous ne l'avez pas validé avant, ou désactiver la tâche CRON d'envoi si vous l'avez activée)

 

DONC : Je me suis amusé à faire un petit test sur le site d'un ami : il est en Prestashop 1.5.4, j'ai désactivé le module sitemap, remplacé par un module venant de la version 1.4.8.2, relancé le tout, modifié très légèrement les URL de redirection... Etonnement ça marche, le fichier sitemap est correct.

 

Pour valider votre sitemap "façon google", n'hésitez pas à aller dans votre console de gestion Goggle webmaster, séclectionner votre sitemap puis "tester le sitemap". Vous verrez si votre sitemap est bien utilisable par Google

Link to comment
Share on other sites

3 images ?

 

Si 3 images passent, et qu'elles ont la même adresse de lien de base, alors elles doivent toutes passer.

Attention que Google est parfois fort lent pour indexer. La période normale est d'environ 7 jours. Il faudrait re-vérifier d'ici 2/3 jour.

 

Les images apparaissent-elles toutes dans votre fichier sitemap.xml ? Si oui alors c'est bon.

 

Sinon - si vous avez plus de 50000 lignes dans votre sitemap - (et ça va très vite avec des sites importants multilingues) c'est peut-être que votre fichier arrive tronqué chez Goggle, mais ça m'étonnerait.

Link to comment
Share on other sites

Oui pourquoi 3 images ? :)

 

Merci pour les news, je ne vais pas passer en 1.5.4.1 je préfère attendre une release correcte et en attendant, je me tape un sitemap maison généré depuis un site, et je retouche le XML pour ne pas me retrouver avec de la bouze en ligne lol

 

Merci Frederic, tu sembles au courant des évolutions, tiens moi au jus stp :) j'ai hate de corriger ça !

 

Salutation et bonne soirée

Link to comment
Share on other sites

Je suis pas plus au courant que ça, mais je suis à la loupe les infos de développement Prestashop, et c'est pas prêt encore, mais presque.

 

Normalement, aucun besoin de retoucher un sitemap, c'est mauvais signe. En général -sauf dans le cas de la 5.1 - c'est que le problème ne vient pas du module, mais bien du site lui-même : mauvaises redirections, URL rewriting mal écrit dans le .htacess, des dossiers qui ne sont pas en autorisation 777, trop de lignes dans le sitemap, balises Meta tittle am écrites ou avec caractères interdits, la belle mère qui vous a jeté un sort....

Link to comment
Share on other sites

Bonjour à tous.

Je viens de lire tous les post du fil et je n'ai pas trouvé la soluce.

 

Je suis sous 1.5.4.1 avec gsitemap:2.1 et en multiboutique.

J'essaye de génére mes sitemaps, mais ca bug completement. Le module se prenant totalement les pieds avec les multiboutique:

 

Je lance la génération depuis:

http://www.example9.tld/admin/

 

Veuillez configurer l'URL de sitemap suivante dans votre interface Google Webmaster :
http://www.example9.tld/index_sitemap.xml
Cette URL correspond au fichier sitemap maître et fait référence à :
fr_0_sitemap.xml

 

et le sitemap contient:

<?xml version="1.0" encoding="UTF-8"?>
 <sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<sitemap>
  <loc>
   http://www.example9.tld/fr_0_sitemap.xml
  </loc>
  <lastmod>
   2013-05-07T16:03:55+02:00
  </lastmod>
 </sitemap>
</sitemapindex>

 

Permier soucis:

   http://www.example1.tld/index_sitemap.xml
   http://www.example2.tld/index_sitemap.xml
   http://www.example3.tld/index_sitemap.xml
   http://www.example9.tld/index_sitemap.xml

sont identique:

 

du coup il renvoie tous vers:

   http://www.example9.tld/fr_0_sitemap.xml

Ensuite ce fichier

contient par exemple:

Il propose des produits d'une boutique mais avec l'url d'une autre boutique?

   http://www.bouique9.tld/produit de_la_boutique1.xml
[...]
   http://www.bouique9.tld/produit de_la_boutique2.xml
[...]
   http://www.bouique9.tld/produit de_la_boutique3.xml
[..]

Edited by jd440 (see edit history)
Link to comment
Share on other sites

  • 3 weeks later...

Bonjour à tous,

 

Bonne nouvelle, nous avons bien avancé cette semaine sur ce module !

 

Au programme :

 

- Correction des bugs mentionnés par Gregory

- Correction d'autres bugs qui n'avaient pas été décelés auparavant

- Correction de fonctions coeurs qui posaient problème pour le bon fonctionnement du module

- Ajout du support du multi-boutiques

 

Pour avoir un module parfaitement fonctionnel, il faudra upgrader en dernière version 1.5.x ou reprendre les corrections coeur de la classe Tools.php.

 

Nous allons faire plusieurs tests dans les jours qui viennent avant de publier cette nouvelle version sur Github.

 

Est-ce que certains d'entre vous sont intéressés par le recevoir en amont afin de jouer les beta-testeurs ?

 

Bon week-end!

  • Like 1
Link to comment
Share on other sites

je viens de mettre le module à jour.

Généré le sitemap:

 

Resultat:

Grosse gamelade.

Sont tous identique

<sitemapindex><sitemap><loc>http://www.domaine1.com/fr_0_sitemap.xml</loc><lastmod>2013-05-24T18:30:37+02:00</lastmod></sitemap></sitemapindex>

et les fichier

http://www.domaine1.com/fr_0_sitemap.xml

http://www.domaine2.com/fr_0_sitemap.xml

http://www.domaine3.com/fr_0_sitemap.xml

 

Ces sitemap qui sont tous identique contiennet tous des fichier vers tous les domaines.

Et les url sont totalement mélangé.

exemple

http://www.domaine2.com/5-ipod-touch.html

se retrouve dans le sitemap à l'adresse:

http://www.domaine1.com/5-ipod-touch.html

 

 

P.S:ATTENTION car gsitemap envoie un ping à google avec un sitemap incorrect.

Heureusement je l'avait désactivé avant.

Link to comment
Share on other sites

Bonjour à tous,

 

Bonne nouvelle, nous avons bien avancé cette semaine sur ce module !

 

Au programme :

 

- Correction des bugs mentionnés par Gregory

- Correction d'autres bugs qui n'avaient pas été décelés auparavant

- Correction de fonctions coeurs qui posaient problème pour le bon fonctionnement du module

- Ajout du support du multi-boutiques

 

Pour avoir un module parfaitement fonctionnel, il faudra upgrader en dernière version 1.5.x ou reprendre les corrections coeur de la classe Tools.php.

 

Nous allons faire plusieurs tests dans les jours qui viennent avant de publier cette nouvelle version sur Github.

 

Est-ce que certains d'entre vous sont intéressés par le recevoir en amont afin de jouer les beta-testeurs ?

 

Bon week-end!

Je veut bien tester

La correction prend t'elle en compte la config SEO pour url rewriting que j'ai évoqué plus haut dans le topic?

Lien original
XXX/en/smoke-detector-kidde-smoke-detector-29-en-kidde-1.html

Liens généré par le sitemap
XXX/en/smoke-detector/1-kidde-smoke-detector-29-en-0047871072.html

Je pense que mon problème vient que j’ai changé la config SEO (Route vers les produits : {category}-{rewrite}-{manufacturer}-{id}.html)
Le lien fourni par le sitemap ajoute à la fin le code EAN13, met id au début du non du produit et ne sépare pas la catégorie, bref je pense que le sitemap ne tiens pas en compte les options SEO du back-office.

Sur la version 2.1.1 du module le bug est toujours présent.

Edited by axodav (see edit history)
Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

Sympa la mise à jour mais encore quelques améliorations à faire:

* Comment gérer le sitemap en multiboutique et multilangue?

* J'ai du texte de présentation, mes produits sont donc caché et pourtant mes pages produits (réservé aux groupes de client) sont référencé...

 

je n'ai que l'anglais d'installer et le module me donne comme lien

http://monsite.co.uk/en_0_sitemap.xml

 

et quand je copie ce lien et ca m'emmene vers le bon sitemap...

 

Il faudrait donc peut etre rajouter plus d'options dans la configuration du sitemap:

Par catégories, groupe client, images, contenu destiné au public distingué de celui pour le client...

 

Merci

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

Bonjour ,

je viens de mettre à jour gsitmap , et du coup j ai tout perdu , QUAND je fais la génération du sitmap , j ai ce message : Vos fichiers sitemap ont été créés avec succès. N'oubliez pas de configurer l'URL http://maher-shop.com/1_index_sitemap.xmldans votre interface Google Webmaster.

quand on donne à google ce lien http://maher-shop.com/1_index_sitemap.xml

 

Erreurs

Sitemap vide

Votre sitemap ne contient pas d'URL. Vérifiez et renvoyez votre sitemap.

Link to comment
Share on other sites

Bonjour

Je viens de faire la MAJ de gsitemap sur ma boutique http://www.comptoirdesjardins.fr/ en version 1.5.3.1 mais aprés lecture de vos avis j'hésite à régénérer le sitemap.

Est ce que vous pouvez m'aider à configurer ce module:

Fréquence ?

Cocher ou non la case Check this box if you wish to check the presence of the image files on the server ?

Pages à exclure du site map?

Merci infiniment pour votre aide.

Link to comment
Share on other sites

Bonjour,

 

Je viens de tester sur un site d'un client http://www.hydroponie-facile.fr avec la dernière version du module en version 2.2.3. Je suis en Prestashop 1.5.4.1.

 

Le fichier sitemamp semble être bien généré. Voir http://www.hydroponi...r_0_sitemap.xml

 

Par contre je note seux points :

 

1/ Le nom du fichier indiqué dans le Back-office n'est pas le bon : 1_index_sitemap.xml au lieu de 1_fr_0_sitemap.xml. A noter que je n'ai qu'une seul langue. Pas bien important, à condition de bien fournir le bon fichier à Google Webmaster.

 

2/ Quand je fourni le fichier à Google Webmaster, ce dernier me donne une erreur de format xml (Balise XML manquante, Balise parent url, balise loc). Hors toutes les balises <loc> sont bien présentes. J'ai comparé le fichier avec ceux d'autres clients, et je ne vois rien de particulier qui explique ce rejet.

 

Bien cordialement

Patrice

Edited by boostervente (see edit history)
Link to comment
Share on other sites

1/ Le nom du fichier indiqué dans le Back-office n'est pas le bon : 1_index_sitemap.xml au lieu de 1_fr_0_sitemap.xml. A noter que je n'ai qu'une seul langue. Pas bien important, à condition de bien fournir le bon fichier à Google Webmaster.

 

2/ Quand je fourni le fichier à Google Webmaster, ce dernier me donne une erreur de format xml (Balise XML manquante, Balise parent url, balise loc). Hors toutes les balises <loc> sont bien présentes. J'ai comparé le fichier avec ceux d'autres clients, et je ne vois rien de particulier qui explique ce rejet.

 

Même souci !

 

Concernant l'erreur 1, en base de donnée, votre table gsitemap ne doit pas avoir la colonne shop. C'était mon cas. Je l'ai rajouté, et ce problème d'URL de sitemap incorrect a disparu.

 

Concernant l'erreur 2, j'ai exactement la même (cf mon post http://www.prestashop.com/forums/topic/259407-google-sitemap-1541-plusieurs-erreurs-balise-xml-introuvable/ ). Apres test, il s'avère que les erreurs ne concernent que les entrée images du XML...

...pas de réponse pour le moment :/

 

Seb

Link to comment
Share on other sites

Bonjour,

 

Effectivement cela vient bien des images.

Voici un lien où il est indiqué la structure d'un fichier sitemap d'image

https://support.goog...er/178636?hl=fr

 

on note que les balises <image:image> sont incluses dans la balise <url> mais avec une balise <loc>

 

Dans le fichier généré par le sitemap 2.2.3, une balise <url> a été créée pour les images sans l'url du produit dans la balise <loc> Voir ci-dessous une partie de code

<url>
<loc>http://www.hydroponie-facile.fr/plan-du-site</loc>
<priority>0.4</priority>
<lastmod>2013-07-03T15:39:51+02:00</lastmod>
<changefreq>weekly</changefreq>
</url>
<url>
<image:image>
<image:loc>
http://hydroponie-facile.fr/182/250w-mh-agrolite-croissance-24-000-lumens.jpg
</image:loc>
<image:caption>
250W MH Agrolite - Croissance - 24 000 Lumens agrolite
</image:caption>
<image:title>250W MH Agrolite - Croissance - 24 000 Lumens</image:title>
</image:image>
</url>

 

J'espère que cela peut être résolu prochainement par l'équipe Prestashop.

 

Cordlalement

Patrice

Link to comment
Share on other sites

bonjour je viens de faire la mise à jour du module en version 2.2.3et prestashop 1.5.4.1 et voila le message obtenu à la création du site map :

 

"An error occured while trying to check your file permissions. Please adjust your permissions to allow PrestaShop to write a file in your root directory."

 

Le version précédente fonctionnait correctement.

 

Merci

Link to comment
Share on other sites

Mon sitemap avec le dernier PS et le dernier module fonctionne mais génère le message "balise XML manquante" sur le Webmaster Tools.

Avez vous une solution ?

C'est bizarre, car le sitemap a l'air d'être correct :(

Link to comment
Share on other sites

Bonjour,

 

@kevin78

Le pb a été identifié dans le post;, comme provenant des images.

 

Je viens de repasser sur le module en version 1.9 qui fonctionnait correctement sur un autre site d'un client. J'ai juste changé une ligne pour ajouter 'http://' pour l'url de l'image. C'est du bricolage mais cela me permet d'avoir un sitemap opérationnel en attendant une correction du module officiel.

 

Patrice

Link to comment
Share on other sites

Merci

malheureusement, il ne fonctionne pas

 

Warning: SimpleXMLElement::addChild(): unterminated entity reference controller=product in /var/www/clients/client0/web12/web/modules/gsitemap/gsitemap.php on line 230

 

Je vais essayer de retrouver un lien de l'ancien prestashop

c'était sur quelle version ?

 

 

Edit : j'ai retrouvé le 1.8 mais il ne fonctionne pas (version 1.4.8)

Edited by kevin78 (see edit history)
Link to comment
Share on other sites

Voici le fichier de la version gsitemap en version 1.9 avec une modification pour l'url de l'image.

 

Patrice

 

Je viens d'essayer cette version du module avec la dernière version de prestashop. Après avoir régénéré le sitemap, je l'ai soumis à Google qui a trouvé de nombreuses erreurs également. C'est sans fin !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...