Jump to content

gsitemap - lignes produits dupliquées, modification requête


Recommended Posts

Bonjour,

Il y a une erreur dans la génération du fichier sitemap pour PS 1.4.3 et 1.4.4

 

Les lignes produit sont duppliquées

 

modules/gsitemap/gsitemap.php

 

modification du code de la requête :

 

/*MODIFIE requete SELECT ajout : AND pl.`id_lang` = il.id_lang
	LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND pl.`id_lang` = il.id_lang)
*/
	$products = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
	SELECT p.id_product, pl.link_rewrite, DATE_FORMAT(IF(date_upd,date_upd,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
		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 p2.`active` = 1 AND c2.`active` = 1) AS level_depth
	FROM '._DB_PREFIX_.'product p
	LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (p.id_product = pl.id_product)
	LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (p.`id_category_default` = cl.`id_category` AND pl.`id_lang` = cl.`id_lang`)
	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 AND pl.`id_lang` = il.id_lang)
	LEFT JOIN '._DB_PREFIX_.'lang l ON (pl.id_lang = l.id_lang)
	WHERE l.`active` = 1 AND p.`active` = 1
	'.(Configuration::get('GSITEMAP_ALL_PRODUCTS') ? '' : 'HAVING level_depth IS NOT NULL').'
	ORDER BY pl.id_product, pl.id_lang ASC');

Link to comment
Share on other sites

Les urls des produits sont dupliquées pour chaque image.

 

le sitemap contient :

exemple du produit 10 avec deux images :

<url>
<loc>http://monsite.fr/fr/ma-categorie/10-article</loc>
<priority>0.5</priority>
<lastmod>2011-07-18</lastmod>
<changefreq>weekly</changefreq>
<image:image>
	<image:loc>http://monsite.fr/10-124/article1.jpg</image:loc>

	<image:caption>Housse de couette hiver</image:caption>
	<image:title>Housse de couette hiver</image:title>
</image:image>
</url>
<url>
<loc>http://monsite.fr/fr/ma-categorie/10-article</loc>
       <priority>0.5</priority>
       <lastmod>2011-07-18</lastmod>
       <changefreq>weekly</changefreq>
       <image:image>
       <image:loc>http://monsite.fr/10-123/article2.jpg</image:loc>
       <image:caption>Housse de couette hiver</image:caption>
       <image:title>Housse de couette hiver</image:title>
       </image:image>
</url>

 

 

 

 

Ne devrait-il pas plutôt contenir :

 

<url>
<loc>http://monsite.fr/fr/ma-categorie/10-article</loc>
<priority>0.5</priority>
<lastmod>2011-07-18</lastmod>
<changefreq>weekly</changefreq>
<image:image>
	<image:loc>http://monsite.fr/10-124/article1.jpg</image:loc>
	<image:caption>Housse de couette hiver</image:caption>
	<image:title>Housse de couette hiver</image:title>
</image:image>
<image:image>
	<image:loc>http://monsite.fr/10-123/article2.jpg</image:loc>
	<image:caption>Housse de couette hiver</image:caption>
	<image:title>Housse de couette hiver</image:title>
</image:image>
</url>

 

 

En outre la classe link est instanciée dans la boucle produit, dans _addSitemapNodeImage, des petites choses qui font augmenter les temps de traitement.

Les fonctions de la classe link devraient être statiques.

Il n'y a pas vraiment de raison pour passer par des instances, lors de leur utilisation.

 

L'attribut de cette classe est "allow" ( autorise url rewriting ), qui est une variable de configuration, qui pourrait être une constante !

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...