Jump to content

Recommended Posts

Bonjour,

 

Tu parle du Google Sitemap ?

 

 

Google sitemap INSTALLÉ

Développé par : PrestaShop | Version : 1.9 | Catégorie : Référencement - SEO

Description : Génère votre fichier sitemap pour Google

 

Sinon il fonctionne bien ! :P

  • Like 1

Share this post


Link to post
Share on other sites

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)

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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>

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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);

Share this post


Link to post
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)

Share this post


Link to post
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 :)

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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)

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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)

Share this post


Link to post
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 ?

Share this post


Link to post
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)

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Avec la mise à jour 1.5.4.1 le sitemap crée un index sitemap et tous les autres sitemap dans les langues du site. Envoyé chez google et les liens sont accéptés. Par contre 3 images acceptées pour le moment.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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....

Share this post


Link to post
Share on other sites

Pfff bon je patiente, prestashop c'est une première experience pour moi, je suis un peu emmerdé avec ces divers soucis ...

 

Merci pour les news (tu les retrouves ou ces infos d'actus developpeur ?)

Share this post


Link to post
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)

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
Share on other sites

Visiblement tu as mal lu :-)

 

La version que tu as testé n'est pas multi-boutiques, le fonctionnement est donc celui attendu.

 

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

  • Like 1

Share this post


Link to post
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)

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

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