Module « déjà vus » Prestashop : Le problème de référencement

Dans: Modules Prestashop|Non classé

5 déc 2011

Comme chacun sait en SEO, Google n’aime pas le duplicate content.

J’ai découvert que le module blockviewed ou déjà vus souffrait d’un défaut important dans ce domaine et qui n’est pas corrigé dans la dernière version de Prestashop (1.4.6.2).

Qu’est-ce qui cloche ?

Le module génère des URLs vers les fiches produit sans EAN alors que partout ailleurs sur les pages de Prestashop, les liens vers une fiche produit contiennent ce fameux code EAN.

Le module blockviewed

Exemple :

http://mon-site.com/ma-categorie/mon-produit-12345678.html

http://mon-site.com/ma-categorie/mon-produit.html

Google devrait indexer les 2 URLs et considérer que le contenu est dupliqué. Ce qui est pénalisant pour le référencement de la page.

La raison ? Probablement un simple oubli.

Pas de panique, je vous livre ici la solution en attendant que Prestashop ne corrige le problème dans une future version.

Que faire ?

Il va s’agir d’ajouter le code EAN dans les liens du module qui pointent vers la fiche produit.
Pour cela, il faudra effectuer les modifications suivantes :

Dans blockviewed.php

  • Ajouter le champ ean13 à la requête SQL pour récupérer l’information en base de données

A la ligne 1 de la requête SQL suivante :

SELECT i.id_image, p.id_product, il.legend, p.active, pl.name, pl.description_short, pl.link_rewrite, cl.link_rewrite AS category_rewrite
FROM '._DB_PREFIX_.'product p
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product)
LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1)
LEFT JOIN '._DB_PREFIX_.'image_lang il ON (il.id_image = i.id_image)
LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = p.id_category_default)
WHERE p.id_product IN ('.$productIds.')
AND pl.id_lang = '.(int)($params['cookie']->id_lang).'
AND cl.id_lang = '.(int)($params['cookie']->id_lang);

Ajouter p.ean13 comme suit :

SELECT i.id_image, p.id_product, il.legend, p.active, p.ean13, pl.name,
pl.description_short, pl.link_rewrite, cl.link_rewrite AS category_rewrite
  • Reporter ce champ dans l’objet qui sera passé au TPL

A la fin du bloc de code suivant :

$obj->id = (int)($productsImagesArray[$productViewed]['id_product']);
$obj->cover = (int)($productsImagesArray[$productViewed]['id_product']).'-'.(int)($productsImagesArray[$productViewed]['id_image']);
$obj->legend = $productsImagesArray[$productViewed]['legend'];
$obj->name = $productsImagesArray[$productViewed]['name'];
$obj->description_short = $productsImagesArray[$productViewed]['description_short'];
$obj->link_rewrite = $productsImagesArray[$productViewed]['link_rewrite'];
$obj->category_rewrite = $productsImagesArray[$productViewed]['category_rewrite'];

Ajouter la dernière ligne pour obtenir le résultat suivant :

$obj->id = (int)($productsImagesArray[$productViewed]['id_product']);
$obj->cover = (int)($productsImagesArray[$productViewed]['id_product']).'-'.(int)($productsImagesArray[$productViewed]['id_image']);
$obj->legend = $productsImagesArray[$productViewed]['legend'];
$obj->name = $productsImagesArray[$productViewed]['name'];
$obj->description_short = $productsImagesArray[$productViewed]['description_short'];
$obj->link_rewrite = $productsImagesArray[$productViewed]['link_rewrite'];
$obj->category_rewrite = $productsImagesArray[$productViewed]['category_rewrite'];
$obj->ean13 = $productsImagesArray[$productViewed]['ean13'];

Dans blockviewed.tpl

  • Ajouter l’EAN13 dans la fonction qui génère le lien vers le produit

Pour chaque occurrence du code suivant :

{$link->getProductLink($viewedProduct->id, $viewedProduct->link_rewrite,
$viewedProduct->category_rewrite)}

Ajouter $viewedProduct->ean13 pour obtenir le code suivant :

{$link->getProductLink($viewedProduct->id, $viewedProduct->link_rewrite,
$viewedProduct->category_rewrite, $viewedProduct->ean13)}

Cheat code

Comme je sais que tout le monde n’est pas fan de programmation PHP, je vous livre le module déjà modifié au lien suivant : blockviewedv2.zip

L’avantage de cette version c’est qu’elle peut fonctionner en concurrence avec le module officiel. Vous pouvez l’installer et désactiver le module officiel. Elle prendra ainsi sa place et la modification ne sera pas effacée en cas de mise à jour de votre boutique.

5 réponses à Module « déjà vus » Prestashop : Le problème de référencement

Avatar

hyd

15 janvier 2012 à 3 h 44 min

merci pour ce travail

Avatar

herve

17 février 2012 à 14 h 26 min

Bonjour

on va dans importation de module pour faire la mise à jour ?

merci de votre réponse

Avatar

Nikos

17 février 2012 à 18 h 42 min

Non il ne s’agit pas d’une mise à jour mais plutôt d’une version parallèle au module officiel.
Je n’ai pas testé l’importation de module mais je suppose que ça doit fonctionner.
L’importation dépend surtout de l’organisation des fichiers à l’intérieur du zip et je ne me suis jamais penché là-dessus.
Au pire, il suffit de dézipper le fichier et on obtient un dossier. On peut alors le copier dans le dossier « modules » de Prestashop.
Ensuite par l’interface admin, il suffit de choisir le module et de cliquer sur « installer » pour finaliser l’opération.

Avatar

pyssou

23 juillet 2012 à 14 h 16 min

Bonjour,

Merci pour le post

Je me demandais si c’est possible de mettre ce block dans la page category juste en bas de la liste des produits dans une categorie.

Ce qui est possible c’est de le mettre dans chaque page produit mais pas dans la page categorie.

Si tu peux m’aider stp, je m’arrache la tête a voir une solution.

Merci

Avatar

Nikos

24 juillet 2012 à 15 h 44 min

Bonjour,

« Ce qui est possible c’est de le mettre dans chaque page produit mais pas dans la page categorie. »
–> Normalement, le blockviewed fonctionne dans la page catégorie.
Il est affiché dans la colonne de gauche et cette colonne est présente partout. Peut-être que vous avez un thème Prestashop qui n’est pas standard et qui n’affiche pas de colonne de gauche en permanence.

Ou alors, je n’ai pas bien compris ce que vous cherchez à faire.

Laisser un commentaire

Auteur

Author picture
Nicolas
Freelance agréé Prestashop
freelance agréé Prestashop

A propos

Prestashop-Blog.com propose des actualités relatives à Prestashop et à l'e-commerce en général. Mais aussi des tutoriels, des astuces, des modules...

Prestashop-Blog.com est un blog indépendant qui n'est pas édité par Prestashop. Il ne peut aucunement être assimilé à un blog officiel Prestashop ou agréé par Prestashop

Twitter

Suivez-nous sur Twitter @PrestashopBlog

Sondage

Quel genre de sujets préférez-vous voir sur ce blog ?

Voir les résultats

Loading ... Loading ...